2012-08-01 26 views
0

所以,我有一款遊戲使用了一堆不同尺寸的瓷磚,我決定編寫一個擴展的水平加載器來容納我的瘋狂。在AS3,FlashPunk&Ogmo中導入XML,涉及冒號的語法(「:」)

據我所見,圖層大小和類型的唯一保存位置是.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> 

這很好,很容易提取網格的名稱,寬度和高度。我真正需要的是類型,這是存儲在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: " + [email protected]:type); 
      trace ("Grid is: " + entry.LayerDefinition.Name); 
     } 
    } 

其產生錯誤:

\src\levelLoader.as(51): col: 41 Error: Syntax error: expecting rightparen before colon. 
+0

XSI的定義是什麼樣的,相信你需要使用類似「use namespace xyz」的東西,或者你需要創建一個Namespace對象並使用:: like,entry.customXSINamespace :: type – shaunhusain 2012-08-01 19:31:13

回答

0

可以使用attribute()方法來獲取屬性與ActionScipt衝突保留字或語法的值。

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

這應該工作,並給你你需要的價值。您可以在AS3參考here中查看attribute()方法。

+0

也許I'ms誤格式化這裏我的命令,但 '私有函數loadProject():無效 \t \t { \t \t \t VAR curProject:XML = FP.getXML(TESTPROJECT); \t \t \t var entry:XML; \t \t \t var counter:uint = 0; (「加載項目」); \t \t // \t trace(curProject。*); \t \t \t每個(在curProject.LayerDefinitions.LayerDefinition條目) \t \t \t { \t \t \t \t //跟蹤( 「網格類型爲:」 + entry.attribute( 「的xsi:type」)); \t \t \t \t trace(「Grid type is:」+ entry.attribute(「xsi:type」)); (「Grid is:」+ entry.Name); \t \t \t} \t \t}」 不返回任何東西。它編譯。越來越近! – GilloD 2012-08-02 01:05:30

+0

它是否返回任何東西,或完全沒有?如果它甚至不能追蹤「​​網格類型爲:」部分,那麼其餘的代碼或XML就會出現問題。有一件事可能導致它入口當前爲空。現在我對每個循環都不太瞭解,但它可能導致它根本不運行循環,只是跳過它。 – puggsoy 2012-08-02 09:50:44