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));
我尝试过使用 - 作为敌人 - 但这不起作用。我在这里缺少什么?
答案 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));