2013-03-09 24 views
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(); 

    } 

} 

回答

1

Adobe's doc有关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); 

    } 

} 
+0

@ user30191,当时这个答案对你有用吗?如果是这样,你介意接受它作为正确的吗? http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – PanterA 2013-03-12 01:00:04

相关问题