0

所以,我有一个游戏,它使用了一堆不同大小的瓷砖,我决定编写一个扩展的关卡加载器来适应我的疯狂。

据我所见,保存图层大小和类型的唯一位置是在标记下的 .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.
4

1 回答 1

0

您可以使用该attribute()方法获取与 ActionScipt 保留字或语法冲突的属性值。

trace("Grid type is: " + entry.attribute("xsi:type"));

这应该有效,并为您提供所需的价值。您可以在此处查看attribute()AS3 参考中的方法。

于 2012-08-01T22:20:16.007 回答