0

HTML5 / Canvasゲームエンジンを開発していますが、行き詰まっています。エンジンはタイルセットを介してマップを描画し、次のようなXMLドキュメントからマップデータを読み取ります。

<map>
    <layer id="-1">
        <row>0,0,0</row>
        <row>1,1,1</row>
        <row>0,0,0</row>
    </layer>

    <layer id="1">
        <row>0,0,0</row>
        <row>1,1,1</row>
        <row>0,0,0</row>
    </layer>
</map>

そして、2次元配列にデータをロードするJavaScript:

var layers = xml.getElementsByTagName("layer");
for(var i in layers)
{
    var rows = layers[i].childNodes;
    for(var j in rows)
    {
        array[i][j] = rows[j].nodeValue;
    }   
}

問題:返されるデータは、「null」、「」、および「undefined」の単なるミッシュマッシュです。また、配列は必要以上に小さいようです。すべての値を調べる前に、ノードの数(length属性を使用)をチェックし、常に実際のノードの数よりも多いためです。

4

1 に答える 1

3
  1. textContentの代わりに使用してくださいnodeValue。前者は、などの正しい値を返します"0,0,0"
  2. テキストノードは子ノードでもあるため、スキップする必要があります(ノードのを確認してくださいnodeType)。これらはアレイを穴で埋め、必要以上に大きくします。テキストノードは基本的にインデントの空白です。これを解決するには、追加のカウンターが必要になります。
  3. forループではなく、通常のループを使用しfor inます。

http://jsfiddle.net/DhKJr/

于 2012-05-19T21:06:19.493 に答える