使用XML在AS3中实例化一个类

时间:2016-11-09 17:57:11

标签: xml actionscript-3 flashdevelop

XML文件:

<MapDetails>
<MapTiles TileWidth="16" TileHeight="16">TestMap1Tiles</MapTiles>

<MapTileFile>TestMap1</MapTileFile>

<Enemy1Class>SkellMonsta</Enemy1Class>

超级简单。我想使用xml文件来定义地图中的所有内容。我在我的GameState类中正确加载了xml文件。一切都很好。 (使用Flixel,顺便说一下)。

add(map.loadMap(new TestMap1, TestMap1Tiles, mapXML.MapTiles.@TileWidth, mapXML.MapTiles.@TileHeight));

无法使用mapXML.MapTileFile引用TestMap1。如果我尝试,我会得到这个:

Error #1007: Instantiation attempted on a non-constructor.

如果我尝试像这样引用SkellMonsta类,会发生同样的事情:

enemies.add(mapXML.Enemy1Class = new mapXML.Enemy1Class(100, 40, hero));

我尝试过使用 - 作为敌人 - 但这不起作用。我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

您的问题是您尝试使用xml中的字符串值,就像它是一个类一样。

您首先需要获得对实际课程的参考。您可以使用OrderedDict document

执行此操作

此方法将采用字符串引用并返回Class引用。但请记住,它需要一个完全限定的名称,因此它应该包含任何包引用。换句话说,flash.display.Sprite代替Sprite

因此,对于您的示例,假设您的敌人课程是顶级课程,您可以这样做:

var cls:Class = getDefinitionByName(getmapXML.Enemy1Class) as Class;

enemies.add(new cls(100, 40, hero));