gpt4 book ai didi

Haxe - 为什么我不能访问 child 的属性而不会收到 parent 没有给定属性的错误?

转载 作者:行者123 更新时间:2023-12-01 14:21:56 25 4
gpt4 key购买 nike

我最近接触了 Haxe,并且刚开始使用 HaxeFlixel 来加载 Tiled .TMX 文件。

我正在创建一个 TiledMap 对象并将 TMX 文件路径传递给它,然后我想遍历该对象中的图层以将它们添加到游戏场景中。但是,当我尝试访问 .tileArray(这是 TiledTileLayer 的一个属性)时,出现以下错误:-

flixel.addons.editors.tiled.TiledLayer has no field 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 的子对象,但是一旦我访问这些子对象的任何 Prop /方法,它就会提示 parent 没有那个字段?非常困惑!

要运行我正在使用这个命令:C:\HaxeToolkit\haxe\haxelib.exe run lime test flash -debug -Dfdb

谢谢!

最佳答案

So if it is a TiledTileLayer which has the field tileArray why is it moaning?

它可能是一个 TiledTileLayer这种情况下,但情况可能并非总是如此。 layers是一个 Array<TileLayer>毕竟,它可能是 TiledObjectLayerTiledImageLayer以及(没有tileArray 字段)。这可以很好地在 the code you linked 中看到.具体类型只能在运行时知道,但你得到的错误发生在编译时。

如果您确定不会有任何对象或图像层,您可以将其转换为 TiledTileLayer .但是,为了安全起见,最好还是事先检查一下类型:

for (layer in _tiled_map.layers) {
if (Std.is(layer, TiledTileLayer)) {
var tileLayer:TiledTileLayer = cast layer;
var layerData:Array<Int> = tileLayer.tileArray;
}
}

它适用于您链接的教程,因为它是为旧版本的 flixel-addons 制作的。

关于Haxe - 为什么我不能访问 child 的属性而不会收到 parent 没有给定属性的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47999570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com