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. ループは、すべてのループ コードを 1 つのステートメントにfor簡素化して効率を高めます。while
  2. 次に、配列ブラケット選択構文を使用して現在の爆弾を選択します。これを行うには、 を使用します。this[name]ここnameで、 は文字列です。使用する文字列は「movingbomb_」でi、末尾に追加されます。
  3. updateBomb最後に、マウス イベントを関数にリダイレクトしてオブジェクトを渡す、新しいイベント リスナーごとに一意の無名関数を作成しcurrentBombます。
于 2012-08-17T04:01:26.383 に答える