所以,我有一个游戏,它使用了一堆不同大小的瓷砖,我决定编写一个扩展的关卡加载器来适应我的疯狂。
据我所见,保存图层大小和类型的唯一位置是在标记下的 .oep 项目文件中。
<LayerDefinitions>
<LayerDefinition xsi:type="GridLayerDefinition">
<Name>Solids</Name>
<Grid>
<Width>24</Width>
<Height>24</Height>
</Grid>
<ScrollFactor>
<X>1</X>
<Y>1</Y>
</ScrollFactor>
<Color A="255" R="0" G="0" B="0" />
<ExportMode>Rectangles</ExportMode>
</LayerDefinition>
这很好,很容易提取网格的名称、宽度和高度。我真正需要的是 TYPE,它存储在 LayerDefinition 标签中:
<LayerDefinition xsi:type="GridLayerDefinition">
问题是,如果我尝试获取 @xsi:type 属性,我会因为冒号而收到错误消息。我怎样才能解决这个问题?如何获取 .xsi:type 属性?图层类型是否存储在我没有看到的其他地方?当前导入代码:
private function loadProject():void
{
var curProject:XML = FP.getXML(TESTPROJECT);
var entry:XML;
var counter:uint = 0;
trace("Loading project");
// trace(curProject.*);
for each (entry in curProject.LayerDefinitions)
{
trace ("Grid type is: " + entry.@xsi:type);
trace ("Grid is: " + entry.LayerDefinition.Name);
}
}
这会产生错误:
\src\levelLoader.as(51): col: 41 Error: Syntax error: expecting rightparen before colon.