2012-08-17 52 views
0

我通過我的10「炸彈」影片剪輯試圖循環並分配調用相同的功能,但通過目前的影片剪輯名稱的事件監聽。 「炸彈」movieclip名稱增加。分配的鼠標事件監聽循環到10部影片剪輯

下面是我嘗試

var i:number; 
    i=0; 
    while (i <= 10){ 
    var current_bomb:Movieclip = (movingbomb_+i); 

     current_bomb.addEventListener(MouseEvent.ROLL_OVER, function updateBomb(current_bomb)); 

    i++ 
    } 

    function updateBomb(currentBomb):void{ 

     currentBomb.gotoAndPlay(2); 
    } 

回答

1

關閉,但並不完全。此外,使用for循環在這裏是一個更好的主意。隨着這些變化,代碼應該看起來像這樣:

for (var i:int = 0; i < 10; i++) { 
    var currentBomb:MovieClip = this["movingbomb_" + i]; 
    currentBomb.addEventListener(MouseEvent.ROLL_OVER, function (evt:MouseEvent):void { updateBomb(currentBomb); }); 
} 

function updateBomb(currentBomb:MovieClip):void { 
    currentBomb.gotoAndPlay(2); 
} 

這是如何工作的。

  1. for循環簡化了所有的while循環的代碼轉化爲效率的單個語句。
  2. 然後,我們使用陣列支架選擇語法選擇當前炸彈。要做到這一點,您可以使用this[name],其中name是一個字符串。我們使用的字符串將是「movingbomb_」與i上漲到年底。
  3. 最後,我們爲它的鼠標事件重定向到您updateBomb功能和傳遞currentBomb對象的每個新的事件偵聽器獨特的匿名函數。
+0

這正是我試圖做。謝謝你的幫助。 +1並檢查。 – Denoteone 2012-08-17 04:20:18