我最近接触了 Haxe,刚刚开始使用 HaxeFlixel 加载 Tiled .TMX 文件。
我正在创建一个 TiledMap 对象并将 TMX 文件路径传递给它,然后我想遍历该对象中的图层以将它们添加到游戏场景中。但是,当我尝试访问 .tileArray(这是 TiledTileLayer 的一个属性)时,我收到以下错误:-
flixel.addons.editors.tiled.TiledLayer 没有字段 tileArray
这是代码:
package;
import flixel.FlxState;
import flixel.tile.FlxTilemap;
import flixel.addons.editors.tiled.TiledMap;
import openfl.Assets;
class PlayState extends FlxState
{
private var _tiled_map:TiledMap;
override public function create():Void
{
_tiled_map = new TiledMap("assets/data/Map1.tmx");
for(layer in _tiled_map.layers){
var layerData:Array<Int> = layer.tileArray;
}
super.create();
}
override public function update(elapsed:Float):Void
{
super.update(elapsed);
}
}
我找到了以下示例 - http://coinflipstudios.com/devblog/?p=182似乎对人们来说效果很好。
所以我想检查图层对象是应该是 TiledTileLayer 还是 TiledLayer,如下所示:
trace(Type.typeof(layer));
这确实产生了:
PlayState.hx:24: TClass([class TiledTileLayer])
因此,如果它是具有 tileArray 字段的 TiledTileLayer,为什么它会呻吟?
我查看了源代码(https://github.com/HaxeFlixel/flixel-addons/blob/dev/flixel/addons/editors/tiled/TiledMap.hx#L135),TiledTileLayer继承自 TiledLayer。Layers 是一个 TiledLayer 类型的数组,所以我想这就是它在呻吟的原因。我可以清楚地看到该数组正在存储 TiledLayer 的子对象,但是一旦我访问这些子对象的任何道具/方法,它就会抱怨父对象没有该字段?非常混乱!
要运行,我使用以下命令:C:\HaxeToolkit\haxe\haxelib.exe runlime test flash -debug -Dfdb
谢谢!