具有自定义类型元素的二维数组

时间:2013-05-13 18:26:45

标签: arrays flash actionscript multidimensional-array flash-cs6

我正在尝试在我的场景中创建一个n x n大小的矩阵,每个元素应该是一个名为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);
    }   
}

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

我收到的错误消息:“输入非参数化类型的参数”

2 个答案:

答案 0 :(得分:1)

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

  

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

adobe reference link on Array creation。或者您可以使用向量(键入,就像您似乎想要的那样)。

所以基本上你想要创建一个Array,它本身就包含数组。当你完成第一个时,你需要创建其中包含的数组。否则,您将尝试推入非现有元素。此外,您需要将索引添加为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);

这应该有效。

答案 1 :(得分: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);
    }   
}