引用二维数组 - 行和列

时间:2012-11-28 18:48:30

标签: arrays actionscript-3 loops multidimensional-array matrix

我有一个二维数组,我想知道如何引用它中的行和列。我使用[行,列]还是[列,行]?我也有一些图形。我是否用(行*大小,列*大小)或(列*大小,行*大小)计算每个图形的(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;
}

1 个答案:

答案 0 :(得分:0)

使用[row,column]引用二维数组是正确的,但使用curX和curY等其他变量名称更容易。重要的是要保持整个项目中索引的含义以及使用的索引。要访问数组中的第一个元素,请为行或curX创建循环,为第二个维创建元素,为列或curY创建循环。

您可以使用(行*大小,列*大小)或(curX *大小,居里*大小)计算网格中图形的坐标集(x,y),因此您的代码是正确的,不需要改变了。

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