0

このサイトでいくつかの調査を行い、やりたいことのほとんどを把握しました。ブロックをクリックします。ブロックが動く。完了すると、別のムービー クリップが再生されます。問題は、2 番目のムービー クリップがループすることです。これを処理するクエリを 1 つ見つけましたが、以下のコードでそれを機能させる方法がわかりません。if ステートメントが true になると、(当然のことながら) クリップを再生し続けますが、一度だけ再生する方法がわかりません。どんな提案でも大歓迎です。

block_1.stop();
block_1.addEventListener(MouseEvent.CLICK, block_1_Click);
function block_1_Click(e:MouseEvent):void {
    block_1.play();

}

block_1.addEventListener(Event.ENTER_FRAME, wavePlay);
function wavePlay(e:Event):void {
    if (block_1.currentFrame==block_1.totalFrames) {
        wave_mc.play();

    }

}
4

1 に答える 1

1

ENTER_FRAMEイベントに関するAdobeのドキュメントには次のように書かれています。

[...]再生ヘッドが新しいフレームに入るときにディスパッチされます。再生ヘッドが動いていない場合、またはフレームが1つしかない場合、このイベントはフレームレートと連動して継続的にディスパッチされます。[...]

つまりENTER_FRAME、リスナーを削除するまで、イベントは実行され続けます。

コードは次のようになります。

block_1.stop();
block_1.addEventListener(MouseEvent.CLICK, block_1_Click);
function block_1_Click(e:MouseEvent):void {
    block_1.play();

}

block_1.addEventListener(Event.ENTER_FRAME, wavePlay);
function wavePlay(e:Event):void {
    if (block_1.currentFrame==block_1.totalFrames) {            
       wave_mc.play();
       block_1.removeEventListener( Event.ENTER_FRAME, wavePlay );

    }

}
于 2013-03-09T05:24:26.727 に答える