在AS3中导入XML,FlashPunk& Ogmo,包含冒号的语法(“:”)

时间:2012-08-01 19:04:49

标签: xml actionscript-3

所以,我有一个游戏,它使用了不同大小的一堆瓷砖纸,我决定编写一个可以容纳我的精神错乱的扩展级装载机。

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

1 个答案:

答案 0 :(得分:0)

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

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

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