我需要创建多个动态数组,似乎在https://jadendreamer.wordpress.com/2012/05/06/flash-as3-tutorial-how-to-create-2d-or-3d-dynamic-multi-dimensional-arrays/找到了我需要的数据
示例1:
var multiDimensionalArray:Array = new Array();
var boolArray:Array;
var MAX_ROWS = 5;
var MAX_COLS = 5;
//initalize the arrays
for (var row = 0; row <= MAX_ROWS; row++)
{
boolArray = new Array();
for (var col = 0; col <= MAX_COLS; col++){
boolArray.push(false);
}
multiDimensionalArray.push(boolArray);
}
//now we can set the values of the array as usual
for (var row = 0; row <= MAX_ROWS; row++)
{
for (var col = 0; col <= MAX_COLS; col++){
boolArray[row][col] = true;
trace('boolArray ' + row + ',' + col + ' = ' + boolArray[row][col]);
}
}
但是,在测试网站上提供的任何一个代码段时,我最终会收到错误"#1056: Cannot create property 0 on Boolean."
检查“Automatically declare stage instances
”。
我花了好几个小时,我确信这很简单,但我不太明白。有什么建议吗?
答案 0 :(得分:1)
从顶部删除boolArray
,目前您总是将相同的数组添加到2D数组中,我怀疑这是故意的。
var multiDimensionalArray:Array = new Array();
//var boolArray:Array; //remove this line
var MAX_ROWS = 5;
var MAX_COLS = 5;
//initalize the arrays
for (var row = 0; row <= MAX_ROWS; row++)
{
var boolArray:Array = new Array(); //create a new Array here
for (var col = 0; col <= MAX_COLS; col++)
boolArray.push(false);
}
multiDimensionalArray.push(boolArray);
}
虽然这不会解决您的问题,但它可以防止进一步的问题。
要解决您的问题,您需要查看代码段底部的第二个for循环结构。
目前,您正在尝试访问boolArray[row][col]
。但是这个对象不是2D数组,它是一维数组。所以你把对象放在索引row
,然后尝试更改名称为col
的变量的值,即0.如你所知,布尔没有一个名为0的变量。
简单地说,你在这里做什么:
boolArray[row][col] = true
实际上是
boolArray[row].0 = true
或
boolArray[row]["0"] = true
要解决此问题,您应该参考您的实际2D阵列。
for (var row = 0; row <= MAX_ROWS; row++)
{
for (var col = 0; col <= MAX_COLS; col++)
multiDimensionalArray[row][col] = true;
trace('multiDimensionalArray' + row + ',' + col + ' = ' + multiDimensionalArray[row][col]);
}
}
用一句话总结一下:你使用了错误的数组对象。
答案 1 :(得分:0)
您忘记注册行数组。
boolArray[row] = new Array();
例如,如果要创建1 * 3阵列 编码如下。
var a:Array = new Array();
a[0] = new Array();
a[0][0] = '1';
a[0][1] = '2';
a[0][2] = '3';
要了解多维数组的基础知识,请点击here