0

我正在尝试在我的场景中创建一个 nxn 大小的矩阵,每个元素都应该是一个名为 Table 的电影剪辑,已经在库中准备好了。

var tables:Array.<Table> = new Array.<Table>(tablesDimension, tablesDimension);

for (var i:int = 0; i < tablesDimension; i++) {
    for (var j:int = 0; j < tablesDimension; j++) {
        var tempTable:Table = new Table();
        tempTable.x = i * 150 + 100;
        tempTable.y = j * 100 + 100;
        stage.addChild(tempTable);
        tables.push(tempTable);
        trace(tables[0][0].x);
    }   
}

不能将影片剪辑(在本例中为表格)放入二维数组中?我是否应该在最后一行中使用一些类型转换,trace(tables[0][0].x);向编译器建议:它是关于一个 Table 类型对象?

我收到的错误消息:“Type parameters with non-parameterized type”

4

2 回答 2

1

我不确定您为什么要尝试使用第一行,但这是不正确的。引用 adobe actionscript 参考:

Array() 构造函数可以以三种方式使用。

请参阅有关阵列创建的 adobe 参考链接。或者您可以使用 Vectors(输入,就像您似乎想要的那样)。

所以基本上你想创建一个数组,它本身将包含数组。当您完成第一个时,您需要创建其中包含的数组。否则,您将尝试插入不存在的元素。此外,您需要按照 RST 的说明添加索引。

var tables:Array.<Table> = new Array();

for (var i:int = 0; i < tablesDimension; i++) {

    tables[i] = new Array();
    for (var j:int = 0; j < tablesDimension; j++) {
        var tempTable:Table = new Table();
        tempTable.x = i * 150 + 100;
        tempTable.y = j * 100 + 100;
        stage.addChild(tempTable);
        tables[i].push(tempTable);
    }
}
        trace(tables[0][0].x);

这应该有效。

于 2013-05-15T02:05:22.080 回答
0

我认为您缺少索引。尝试这个

for (var i:int = 0; i < tablesDimension; i++) {
    for (var j:int = 0; j < tablesDimension; j++) {
        var tempTable:Table = new Table();
        tempTable.x = i * 150 + 100;
        tempTable.y = j * 100 + 100;
        stage.addChild(tempTable);
        tables[i].push(tempTable);
        trace(tables[0][0].x);
    }   
}
于 2013-05-13T18:55:23.530 回答