1

2次元配列があり、その中の行と列を参照する方法を知りたいです。[row、column]または[column、row]を使用しますか?グラフィックもあります。各グラフィックの(x、y)座標セットを(row * size、col * size)または(col * size、row * size)で計算しますか?

2次元配列全体が、グリッドの構築命令です。配列内の各要素は、グリッドの一部を参照します。私はこのグリッドとその断片を構築する方法を知っており、配列の要素にアクセスして操作する方法を知っています。

問題は、グリッドを作成するときに、各ピースのx座標とy座標を計算する必要があることですが、変数curRowをx座標とy座標のどちらに使用する必要があるのか​​わかりません。変数curColでも同様です。

私のコードは機能していますが、混乱します。行列の参照方法を知ったばかりなので、行がy座標を制御し、列がx座標を制御するように思います。どうしたらいいかわからないことが頭に浮かんだので、お願いします。以前は、[row、column]を使用してループし、(row * size、col * size)を使用して配置していました。

これまでのコードは次のとおりです。

function buildGrid(gridInfo:Array):Sprite {
    var displaySprite:Sprite = new Sprite();

    for(var curRow:uint=0;curRow<gridInfo.length;curRow++) {
        for(var curCol:uint=0;curCol<gridInfo[curRow].length;curCol++) {
            var infoRef:Object = gridInfo[curRow][curCol];//create reference for fast access

            var pieceGraphic:Shape = new Shape();
            pieceGraphic.graphics.beginFill(infoRef.fillColor);
            pieceGraphic.graphics.lineStyle(infoRef.borderThickness,infoRef.theBorderColor);
            pieceGraphic.graphics.drawRect(0,0,infoRef.sideLength,infoRef.sideLength);
            pieceGraphic.graphics.endFill();

            pieceGraphic.x = curRow*(infoRef.sideLength+infoRef.spaceX);//later use of graphic requires known x
            pieceGraphic.y = curCol*(infoRef.sideLength+infoRef.spaceY);//later use of graphic requires known y

            displaySprite.addChild(pieceGraphic);
        }
    }

    return displaySprite;
}
4

1 に答える 1

0

[row、column]で2次元配列を参照するのは正しいですが、curXやcurYなどの他の変数名を使用すると簡単になります。プロジェクト全体でインデックスが何を意味し、どのインデックスが使用されているかを一貫させることが重要です。配列の最初の要素にアクセスするには、行またはcurXのループを作成し、2番目の次元の要素のループを列またはcurYのループを作成します。

(row * size、col * size)または(curX * size、curY * size)を使用して、グリッド内のグラフィックの座標セット(x、y)を計算できるため、コードは正しく、変更する必要はありません。

行は水平で、列は垂直であることに注意してください。

于 2012-12-01T10:17:43.053 に答える