AS3 - 错误 #1056:无法在布尔值上创建 属性 0
AS3 - Error #1056: Cannot create property 0 on Boolean
我需要创建多个动态数组,似乎已经在 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
" 已选中。
我在这上面花了几个小时,我确信它很简单,但我不太明白。有什么建议吗?
您忘记注册行数组。
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
从顶部删除 boolArray
,目前您总是向二维数组添加相同的数组,我怀疑这是故意的。
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]
。但是这个对象不是二维数组,而是一维数组。因此,您在索引 row
处获取对象,然后尝试更改名称为 col
的变量的值,即 0。如您所知,布尔值没有一个名为 0.
的变量
简单地说,你在这里做什么:
boolArray[row][col] = true
实际上是
boolArray[row].0 = true
或
boolArray[row]["0"] = true
要解决这个问题,你应该参考你实际的二维数组。
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]);
}
}
一句话总结:你用错了数组对象。
我需要创建多个动态数组,似乎已经在 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
" 已选中。
我在这上面花了几个小时,我确信它很简单,但我不太明白。有什么建议吗?
您忘记注册行数组。
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
从顶部删除 boolArray
,目前您总是向二维数组添加相同的数组,我怀疑这是故意的。
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]
。但是这个对象不是二维数组,而是一维数组。因此,您在索引 row
处获取对象,然后尝试更改名称为 col
的变量的值,即 0。如您所知,布尔值没有一个名为 0.
简单地说,你在这里做什么:
boolArray[row][col] = true
实际上是
boolArray[row].0 = true
或
boolArray[row]["0"] = true
要解决这个问题,你应该参考你实际的二维数组。
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]);
}
}
一句话总结:你用错了数组对象。