0

我最近拿起了 flixel(我以前编程过,但我有一段时间没有),我遇到了一个问题。我正在尝试创建地图,最终会有多个地图可用。

我目前有一个 .txt 文件,其中包含最终进入数组的信息。然后我从数组到映射loadmap。这可能是完成这项任务的一种简单方法,也许它们是更好的方法(我还没有探索过 flixel 的所有可能性,如果有任何意见,请继续告诉我)但现在效果很好。

正如我之前所说,我正在尝试使用多张地图来做到这一点。我可以通过使用[Embed(source = "")]每个 .txt 文件来做到这一点,但这最终可能会很烦人。所以,这是我的问题:有没有一种可能的方法基于变量嵌入文件?

我的 Map 类如下所示:

public function Map(MapSet:String, TileSet:String) 
        {
            super(MapSet, TileSet);
            //more stuff
        }

现在我试过了:

[Embed(scource="data/MapSets/" + MapSet + ".txt",  mimeType = "application/octet-stream")]private var loadedMap:Class

然后我使用:

map = new Map("Map1x1", "ForestTiles");
add(map);

有没有可能以不同的方式做到这一点?或者我做错了什么?欢迎所有意见。

4

2 回答 2

1

了解代码在使用时的作用是有益的。

嵌入是一个元标记。它告诉编译器将某个文件包含到 .swf 文件中。这意味着这不会在运行时发生。

当这个嵌入代码被“执行”时,你的变量甚至还不存在。这就是您的代码无法工作的原因。

尽管不起作用,但您的解决方案仍然有效:如果您发现生成代码很乏味,请编写一个为您执行此操作的程序。创建/使用在给定目录中查找所有有效文件并创建所有嵌入标签的程序。在编译器之前运行这个程序。

于 2015-01-17T10:35:15.113 回答
0

要嵌入文本文件并用作字符串,请尝试以下操作:

// create source var TextSource
[Embed(source="textFile.txt",mimeType="application/octet-stream")]
private var TextSource:Class;

var myByteArray:ByteArray = new TextSource();
var myString:String = myByteArray.readUTFBytes(myByteArray.length);

// then use for your function
map = new Map("Map1x1", myString);
于 2015-01-17T21:57:22.383 回答