我使用循環來創建電影剪輯的網格。剪輯存儲在數組tileArray
中。
這裏是我的代碼:AS3:解決陣列中影片剪輯的問題!
//Spawn Checkers
var i:int = new int();
var j:int = new int();
var tileArray:Array = new Array();
for (i=0; i<22; i++)
{
for (j=0; j<12; j++)
{
var tile:checker = new checker(i * 25 + 49,j * 25 + 40);
stage.addChild(tile);
tileArray.push(tile);
}
}
//Activate Checkers (TEST)
var m:int = new int();
for (m=0; m<tileArray.length; m++)
{
tileArray[m].gotoAndPlay(1);
}
我的問題是在運行//Activate Checkers (TEST)
代碼段時,它並沒有解決第0個元素。即在位置(49,40)創建的第一個圖塊。如果我這樣做tileArray[0].gotoAndPlay(1);
它可以工作,但由於某種原因,for循環將會觸及每個拼貼塊,除了tileArray
中的第一個checker
對象。
E: 當使用trace(m);
我可以看到m
確實從0開始,但循環無法執行tileArray[0].gotoAndPlay(1)
。此外,如果我將tileArray[0].gotoAndPlay(1);
放在循環之外並註釋掉循環,則不會生成任何貼圖。 tileArray[0].gotoAndPlay(1);
在循環外不起作用,但在裏面工作 - 除非數組索引是我的迭代變量。很奇怪。
'new int()'''new Array()'?只是'var i:int'和'var tileArray:Array = []',它更短更快。 – alxx 2011-05-28 06:01:58
@ alxx,根本不需要聲明'i'和'j'。但是如果你在'for'之前聲明'var i:int = 0',那麼所有的會更快一些 – Eugeny89 2011-05-28 08:37:54
你的棋類是什麼?我假設你正在傳遞x,y位置 - 但我看不到該課程會發生什麼,這可能是問題的一部分。檢查器類也涉及庫動畫片段?如果是這樣,那個movieclip在它的時間軸上有沒有任何代碼?我使用自己的代碼和來自庫中的自己的檢查器符號,並且此代碼工作。所以我相信這個問題出現在檢查器類或庫中使用的符號內。我唯一的改變是在循環中創建實例後,用你的計算手動設置tile的x,y位置。 – prototypical 2011-05-29 00:40:09