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>

グリッドの名前、幅、高さを抽出するのは簡単です。本当に必要なのは、LayerDefinition タグに格納されている TYPE です。

<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 に答える