2012-11-14 32 views
1

我正在播放聲音文件(mp3)並循環播放30次。如何計算播放中的當前聲音循環(0,30)

soundChannel = soundLoop.play(0, 30); 

我想將當前循環顯示爲textField中的數字。曾嘗試使用eventListener來確定每個循環何時重新啓動,但我認爲Event.SOUND_COMPLETE在加載聲音時調度,而不是每次重複播放。

我很感激這方面的一些指導。謝謝。

編輯一起工作代碼 感謝@巴里斯

var lastPosition:Number; 
    var loops:int=1; 
    var timerLoops:Timer = new Timer(1000); 
    timerLoops.addEventListener(TimerEvent.TIMER, startTimerLoops); 

    function startTimerLoops():void 
    { 
     timerLoops.start(); 

     if(lastPosition > soundChannel.position) 
      loops++; 
      lastPosition = soundChannel.position; 
      trace("Playing " + loops + " of 30" + "-" + lastPosition); 

    } 

回答

1

soundChannel.position是從聲音的開始時間(毫秒)。聲音循環後它重置爲0。你可以跟蹤這個來確定聲音是否循環。

喜歡的東西在你更新的以下/ enterFrame事件可以工作:

private function update():void 
{ 
    if(lastPosition > soundChannel.position) 
     loops++; 
    lastPosition = soundChannel.position; 
} 
+0

將需要某種形式的監聽,拿起每一個「重置爲0」? – Stephen

+0

是的,這個函數應該是一個監聽器。它可能是一個計時器事件或一個輸入框架事件。它必須定期調用,以便您可以在發生循環時快速檢測。 –

+0

好的,謝謝。我會進一步看看。 – Stephen

相關問題