0

我对 AS3 相当陌生。我一直在绞尽脑汁想弄清楚这一点。我有一个网格系统。每个网格块都被实例化为 row1、row2 等。

我有一些代码重复使用 for (var i:int = 0; i < 81; i++) 添加子级。

在最后的 for 块中,它添加了 row.addChild(item); 有没有办法让 row + i 自动命名该行并将子行添加到其中?这两本书我什至都没有提到它,尽管它们使用某种 [i] 或 (i) 来表示其他一些东西。

任何帮助都将不胜感激,因为我已经被这个问题困扰了好几天了,而且我的互联网搜索对这个问题不起作用。

这是我的代码:

for (var i:int = 0; i < 81; i++) {
        var item:MovieClip = new MovieClip();
        //item.fnumber = i;
        item.ftype = Math.round(Math.random() * 5 + 1); 


                        if (item.ftype == 1) {
                        var item:MovieClip = new item(); item.fnumber = i; item.fcolor = ""; item.ftype = 1}
                        if (item.ftype == 2) {
                        var item:MovieClip = new item2(); item.fnumber = i; item.fcolor = ""; item.ftype = 2}
                        if (item.ftype == 3) {
                        var item:MovieClip = new item3(); item.fnumber = i; item.fcolor = ""; item.ftype = 3}
                        if (item.ftype == 4) {
                        var item:MovieClip = new item4(); item.fnumber = i; item.fcolor = ""; item.ftype = 4}
                        if (item.ftype == 5) {
                        var item:MovieClip = new item5(); item.fnumber = i; item.fcolor = ""; item.ftype = 5}
                        if (item.ftype == 6) {
                        var item:MovieClip = new item6(); item.fnumber = i; item.fcolor = ""; item.ftype = 6}



                    row.addChild(item);
                    item.flevel = 1;
4

2 回答 2

0
var rows:Array = [];
var mcs:Array = [item, item2, item3, item4, item5, item6];

for(var n:int = 0; n<10; n++) {
    var row:Sprite = new Sprite();
    for (var i:int = 0; i < 81; i++) {

        var ftype = Math.round(Math.random() * 5 + 1); 
        var item:MovieClip = new mcs[ftype]();
        item.fnumber = i;
        item.fcolor = "";
        item.ftype = ftype;
        item.flevel = 1;

        row.addChild(item);

    }
    addChild(row);
    rows.push(row);
 }

现在您可以使用rows[i].

于 2013-07-26T08:41:03.473 回答
0

如果要处理计算名称的组件,请使用this[computedName]方法。但是,请确保您不会以 null 或 undefined 查询而告终,如果您错误地命名组件,可能会发生这种情况。更改 Baris 的代码:

var rows:Array = [];
var mcs:Array = [item, item2, item3, item4, item5, item6];

for(var n:int = 1; n<10; n++) {
    var row:MovieClip=this["row"+n]; // <-- this is the trick
    for (var i:int = 0; i < 81; i++) {

        var ftype = Math.round(Math.random() * 5 + 1); 
        var item:MovieClip = new mcs[ftype]();
        item.fnumber = i;
        item.fcolor = "";
        item.ftype = ftype;
        item.flevel = 1;

        row.addChild(item);

    }
    // addChild(row); this is not needed, as you have your rows already on screen
    rows.push(row);
 }

Baris 还提供了一些技巧供您学习和掌握,例如创建一系列类以随机选择。

于 2013-07-26T10:05:14.620 回答