0

flixel-addons ライブラリを使用して、haxeflixel アプリで単純な tmx マップを使用しようとしています。

私の tmx マップには、すべてのタイルを含む 1 つのレイヤーがあります。マップに特別なことは何もありません。TiledMap デモを参照として使用しようとし、必要ないと思われるすべてのコードを削除しました。

これは私のカスタマイズしたマップ クラスです。

class MapLoader extends TiledMap
{
    // Array of tilemaps used for collision
    public var backgroundTiles:FlxGroup;

    public function new(tiledLevel:Dynamic)
    {
        super(tiledLevel);

        backgroundTiles = new FlxGroup();

        FlxG.camera.setBounds(0, 0, fullWidth, fullHeight, true);

        // Load Tile Maps
        for (tileLayer in layers)
        {

            var processedPath = "assets/images/tiles/sheet.png";
            trace(processedPath);

            var tilemap:FlxTilemap = new FlxTilemap();
            tilemap.widthInTiles = width;
            tilemap.heightInTiles = height;
            tilemap.loadMap(tileLayer.tileArray, processedPath, 128, 64, 0, 1, 1, 1);

            backgroundTiles.add(tilemap);

        }
    }

}

そして、私はこのように PlayState でそれを呼び出しています。

    // Load the tilemap
    _map = new MapLoader(AssetPaths.map__tmx);

    // Load the tilesets
    add(_map.backgroundTiles);

私が取得し続けるエラーは次のとおりです。

flixel.addons.editors.tiled.TiledMap has no field backgroundTiles

ただし、デモで行われているように、このフィールドを実際に追加しているように思えます。私が間違っているのは何ですか?私の Haxe/Haxeflixel の専門知識は初心者レベルです。

コードを簡単に調べるには、 https://github.com/rishavs/KingdomFail_Haxe/を参照して ください。

私が参照しているデモ ソースは https://github.com/HaxeFlixel/flixel-demos/tree/master/Editors/TiledEditor/sourceにあります。

4

2 に答える 2

3

それ以外の

private var _map:TiledMap;

やってみてください:

private var _map:MapLoader;

そうしないと、コンパイラは、インスタンスがサブクラスで宣言したプロパティを実際に持っていることを認識しません。

設計的にMapLoaderは、TiledMap. FlxGroup探しているものを作成するための関数だけが必要なようです。

于 2015-01-05T14:18:55.890 に答える