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

时间:2015-01-17 06:01:39

标签: actionscript-3 flixel

我最近选择了flixel(我之前编程过,但我已经有一段时间了)而且我遇到了一个问题。我正在尝试创建地图,最终会有多个地图可用。

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

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

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

是否有可能以不同的方式这样做?或者也许我做错了什么?欢迎所有意见。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分: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);