私は最近Haxeに入ってきて、HaxeFlixelを使ってTiled .TMXファイルを読み始めました。Haxe - 親が指定された属性を持っていないというエラーを出さずに、子の属性にアクセスできないのはなぜですか?
私はTiledMapオブジェクトを作成し、TMXファイルパスを渡しています。そのオブジェクトのレイヤーを繰り返してゲームシーンに追加したいとします。私は(TiledTileLayerのプロパティです).tileArrayにアクセスしようとすると、しかし、私は次のエラーを取得する: -
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 -Dfdb
-debug実行ライムテストフラッシュありがとうございました!