2012-11-22 42 views
1

不幸的是,我的代码导致声音在电影的帧率上重复。我只需要一个简单的“在特定框架中播放声音”功能,但无法弄清楚这一点。谢谢你的帮助。AS3:如何在当前帧==播放声音?

addEventListener(Event.ENTER_FRAME,soundFunction); 
function soundFunction(event:Event) 
{ 
if (naturepage.ocean_btns.currentFrame == 2) 
{ 
    ocean_channel.stop(); 
    ocean_channel = ocean1.play(0,int.MAX_VALUE); 
    mySO.data.ocean = "2"; 
    mySO.flush(); 
} 

} 

回答

1

这似乎是正确的。你确定naturepage.ocean_btns movieclip没有停在第二帧或循环很少的帧吗?

另一种选择是使用一个标志来看看,如果你已经播放的声音:

var alreadyPlayedSound:Boolean = false; 
addEventListener(Event.ENTER_FRAME,soundFunction); 
function soundFunction(event:Event) 
{ 
    if (naturepage.ocean_btns.currentFrame == 2 && !alreadyPlayedSound) 
    { 
     alreadyPlayedSound = true; 

     ocean_channel.stop(); 
     ocean_channel = ocean1.play(0,int.MAX_VALUE); 
     mySO.data.ocean = "2"; 
     mySO.flush(); 
    } 
} 

,或者一旦你播放的声音删除事件侦听器:

addEventListener(Event.ENTER_FRAME,soundFunction); 
function soundFunction(event:Event) 
{ 
    if (naturepage.ocean_btns.currentFrame == 2) 
    { 
     ocean_channel.stop(); 
     ocean_channel = ocean1.play(0,int.MAX_VALUE); 
     mySO.data.ocean = "2"; 
     mySO.flush(); 

     removeEventListener(Event.ENTER_FRAME,soundFunction); 
    } 
} 
+0

辉煌,谢谢。我使用了你的旗帜思想,并实现了我的共享对象,因为我有几个需要重复的框架。它效果很好。 – akhunaton