无法理解as3中的多维数组

时间:2013-12-30 13:26:22

标签: arrays actionscript-3 multidimensional-array

假设我有一些代码:

private function makeGrid():void
    {
        _grid = new Array();

        for(var i:int = 0; i < stage.stageWidth / GRID_SIZE; i++)
        {
            _grid[i] = new Array();

            for(var j:int = 0; j < stage.stageHeight / GRID_SIZE; j++)
            {
                _grid[i][j] = new Array();
            }
        }
    }

我不太明白发生了什么。我在第一个for循环中得到它确定所需的列数,在第二个它确定行,但我不明白为什么我从_grid[i]_grid[i][j]制作数组。

例如,_grid[i] = new Array();被称为16次(800px / 50px),这样可以使16个数组正确吗?如果第二个for循环已经在计算我需要的行数,为什么还需要那些呢?

1 个答案:

答案 0 :(得分:1)

我将详细阐述已经评论过的内容。假设您正在创建由行和列组成的2D网格,并且您希望在网格的每个“单元格”或指定索引处存储某种数据。

第一步是创建第一个数组以保存行或列(您首先选择的并不重要,因为您可以通过任何方式调整for循环)。

第一个for循环创建一个新行,然后在下一个内部循环中填充该行的所有列(如果我们先选择要创建的列,那么我们将填充列的所有行)。在这种情况下,内部循环使用另一个数组创建所有列(使其成为注释中提到的三维数组)。

这样做的原因是为了组织和轻松查找。如果您想查看存储在第3行第1列中的数据,那么就像执行_gird[2][0]一样简单。

现在关于为什么在_grid[i][j] = new Array();中创建第三维,以确定需要在该行和列存储哪种数据。