将鼠标事件监听器与循环分配给10个动画片段

时间:2012-08-17 03:28:09

标签: actionscript-3 flash event-listener

我正在尝试循环使用我的10"炸弹" movieclips并指定一个eventlistener,它调用相同的函数但传递当前的动画片段名称。 "炸弹" movieclip名称递增。

以下是我的尝试

 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 个答案:

答案 0 :(得分: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对象。
相关问题