2012-03-24 71 views
0

在Flash中,我創建了一個包含實例名稱爲c0到c399的400個按鈕的網格。 在ActionScript中,我想創建一個數組是這樣的:Actionscript 3.0:製作一組按鈕實例名稱

var myArray:Array = [c0,c1,c2,c3,c4,c5,c6]; 

全部達c399方式。

我寫了一個for循環做的伎倆,但它似乎並不奏效:

import flash.events.MouseEvent; 
//create the array 
var myArray:Array = []; 


for (var i:int=0;i<399;i++){ 
    var cletter:String = 'c'; 
    var p:String = i.toString(); 
    var newvalue:String = cletter + p; 
    var shizzle:Object = new SimpleButton(); 
    myArray[i] = shizzle; 
} 


for each(var btn in myArray){ 
    btn.addEventListener(MouseEvent.CLICK, onBtnClick); 

} 
function onBtnClick(event:MouseEvent):void{ 
cellinfo.gotoAndStop(event.target.name); 
} 

當我發佈,沒有錯誤顯示出來,而且當我點擊按鈕,沒有任何反應。 HOwever,如果我使用

var myArray:Array = [c0,c1,c2,c3,c4,c5,c6]; 

它確實工作! (至少前7個按鈕)。

而且,當我把:

for (var i:int=1;i<6;i++){ 
    var cletter:String = 'c'; 
    var p:String = i.toString(); 
    var newvalue:Object = cletter + p; 
    myArray[i] = newvalue; 
} 

它說:類型錯誤:錯誤#1006:值不是一個函數。 at PVproject1_fla :: MainTimeline/frame1()

我剛開始使用AS3 + Flash並花費數小時尋找解決方案。請幫忙!

由於提前, 羅布

回答

1

你的代碼是在一個以上的方式打破。

for (var i:int=0;i<399;i++){ 
    var cletter:String = 'c'; 
    var p:String = i.toString(); 
    var newvalue:String = cletter + p; // => this is never used 
    var shizzle:Object = new SimpleButton(); // => this creates a new (!) button 
    myArray[i] = shizzle; 
} 

每400個新創建的按鈕從未添加到舞臺上,所以你看不到它。而且由於它沒有皮膚或其他視覺特性,如果是這樣的話,您將無法看到它。

第二個for循環使只有人名到陣列 - 這會導致「價值不是一個函數」錯誤,當您試圖訪問數組值的按鈕,因爲該值實際上是一個字符串:

for (var i:int=1;i<6;i++){ 
    var cletter:String = 'c'; 
    var p:String = i.toString(); 
    var newvalue:Object = cletter + p; // <= this is a String! 
    myArray[i] = newvalue; 
} 

現在,除了根本的疑問,您是否真的想手動創建400個按鈕實例(我會考慮在ActionScript中使用這個實際創建來填充數組),您可以執行以下操作 - 但請記住:只有如果按鈕實例已經在舞臺上,並且循環位於幀腳本中!

for (var i:int=0;i<399;i++){ 
    myArray[i] = this["c"+i]; // no need for all the p and .toString() stuff, btw 
} 
+0

真棒!就是這樣..我想這是魔術'這個'。感謝世界房間海盜。 – Rob360 2012-03-24 18:35:45

+0

不客氣,但它並不神奇;)它被稱爲「括號語法」:http://www.senocular.com/?entry=241 – weltraumpirat 2012-03-24 18:39:49