在 AS3 + flixel 中嵌入带有变量的文件

Embedding a file with a variable in AS3 + flixel

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

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

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

我的地图 class 看起来像这样:

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);

是否有可能以不同的方式做到这一点?或者我做错了什么?欢迎大家提出意见。

了解代码在使用时的作用很有帮助。

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

当此嵌入代码为"executed"时,您的变量甚至还不存在。 这就是您的代码无法运行的原因。

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

要嵌入文本文件并用作字符串,试试这个:

// 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);