0

我在这个网站上做了一些研究,并弄清楚了我想做的大部分事情。我点击一个块。块移动。完成后,它会播放另一个影片剪辑。问题是它循环了第二个影片剪辑。我找到了一个处理这个问题的查询,但不知道如何使它与下面的代码一起工作。一旦 if 语句为真,它就会继续播放剪辑(应该如此),但我不知道如何让它只播放一次。任何建议都非常感谢。

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

Adobe关于该ENTER_FRAME事件的文档说:

[...] 当播放头进入新帧时调度。如果播放头没有移动,或者只有一帧,则此事件将与帧速率一起连续调度。[...]

这意味着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 回答