私は最近 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([クラス 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 runlim test flash -debug -Dfdb
ありがとうございました!