2012-11-22 39 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