2013-07-26 44 views
0

我對AS3相當新。試圖弄清楚這一點,我一直在絞盡腦汁。我有一個網格系統佈局。每個網格塊的實例row1,row2等問題添加子網格系統

我有一些代碼反覆添加使用for(var i:int = 0;我< 81; i ++)的子代。

在這個塊中,最後添加了row.addChild(item);是不是有辦法讓行+我,所以它會自動命名該行並添加到它的孩子?這兩本書我都沒有提到它,儘管它們使用某種[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; 

回答

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]訪問行。

+0

Et,si les rows sont des elementsdéjàexistants etprésentsur ta timeline,tu peux simplement utiliser lemêmesystèmede remplissage de mcs,et retirer lacréationdes rows:var rows:Array = [row1,row2,row3。 ..] – Aralicia

+0

我感謝你的迴應,但它不起作用。我不認爲我可以做我想做的事情。每行不是一行,而是屏幕上已經有一個塊。它們被命名爲row1,row2等。我試圖通過使用for循環來添加項目到每個塊中。我認爲我可以使用數組,然後將項目子項添加到每個塊中,但這不起作用。 我想要像行[i] .addChild(item),但顯然是錯誤的。無論如何謝謝你Baris! – micker

+0

我來自PHP編程。我希望有一個回聲命令LOL​​! – micker

0

如果要解決計算名稱的組件,請使用this[computedName]方法。但是,請確保您不會以null或undefined結尾查詢,如果您錯誤地命名組件,就會發生這種情況。巴里斯的改變代碼:

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); 
} 

巴里斯有有一些技巧供您學習和掌握太像創建類數組的形式隨機從中選擇。