所以,我有一款遊戲使用了一堆不同尺寸的瓷磚,我決定編寫一個擴展的水平加載器來容納我的瘋狂。在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.
XSI的定義是什麼樣的,相信你需要使用類似「use namespace xyz」的東西,或者你需要創建一個Namespace對象並使用:: like,entry.customXSINamespace :: type – shaunhusain 2012-08-01 19:31:13