1

我有一个二维数组,我想知道如何引用其中的行和列。我使用 [row,column] 还是 [column,row]?我也有一些图形。我是用 (row*size,col*size) 还是 (col*size,row*size) 计算每个图形的 (x,y) 坐标集?

整个二维数组是网格的构建指令。数组中的每个元素都指向网格的一部分。我知道如何构建这个网格及其片段,并且我知道如何访问和操作数组的元素。

问题是,当我构建网格时,我必须计算每个部分的 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] 引用二维数组是正确的,但使用 curX 和 curY 等其他变量名称更容易。重要的是要在整个项目中保持一致的索引含义以及使用的索引。要访问数组中的第一个元素,请为行或 curX 创建一个循环,并为第二维中的元素为列或 curY 创建一个循环。

您可以使用 (row*size,col*size) 或 (curX*size,curY*size) 计算网格中图形的坐标集 (x,y),因此您的代码是正确的并且不需要更改。

请记住,行是水平的,列是垂直的。

于 2012-12-01T10:17:43.053 回答