0

我正在尝试遍历我的 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);
    }
4

1 回答 1

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], wherename是一个字符串。我们使用的字符串将是“movingbomb_”,并附i加到末尾。
  3. 最后,我们为每个新的事件监听器创建一个唯一的匿名函数,它将鼠标事件重定向到您的updateBomb函数并传递currentBomb对象。
于 2012-08-17T04:01:26.383 回答