AS3 - 错误#1056:无法在布尔值上创建属性0

时间:2015-06-06 20:45:19

标签: arrays actionscript-3 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”。

我花了好几个小时,我确信这很简单,但我不太明白。有什么建议吗?

2 个答案:

答案 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