2010-01-10 68 views
1

我有3個想播放的聲音,它們在我的音樂庫中。
我可以打任何的他們用soundName.start(0,1)與下面的代碼:按順序播放音樂時每個都結束

firstSound = new Sound(); 
firstSound.attachSound("Sound1"); 
secondSound = new Sound(); 
secondSound.attachSound("Sound2"); 
thirdSound = new Sound(); 
thirdSound.attachSound("Sound3"); 

我遇到的問題是,我怎麼能知道什麼時候Sound1例子完成後打,這樣我就可以玩SOUND2然後sound3立即?

回答

2

您可以使用幀率和聲音長度來計算聲音結尾的幀號。 之後,您可以撥打AddFrameScript(frameNum, function)並添加代碼以播放下一個聲音。

+0

這聽起來相當複雜,我不知道從哪裏開始這一點。我認爲這樣的事情沒有事件發生?我試過firstSound.addEventListener(「complete」,myListener); \t var myListener = new Object(); \t myListener.complete = function(){ \t \t trace(「done」); \t}; 但這不會觸發。 – 4imble 2010-01-10 18:19:56

+0

這是如何獲得聲音持續時間: var c_snd:Sound = new Sound(); c_snd.attachSound(「linked_sound」); trace('duration:'+((c_snd.duration/1000)<< 0)+'s'); 除以你的幀速率,你會得到它結束幀號。讓我們稱之爲「some_frame」; 使用some_movie_clip.AddFrameScript(some_frame,your_sound_start_function)。 我假設你在第0幀和主要影片剪輯中開始第1個聲音。 – oldUser 2010-01-10 18:28:07

+0

嗨,那裏,謝謝你的代碼,我認爲AddFrameScript是AS3,但我可能能夠得到它與某種形式的延遲工作,謝謝你。 – 4imble 2010-01-10 18:39:08

0

事實上存在着AS2的方式,利用使用onSoundComplete:

soundFX = new Sound(); 
soundFX.loadSound("sound.wav", true); 
//or, if your sound is already in the library, 
//use soundFX.attachSound("librarySoundInstanceName"); 
soundFX.onSoundComplete = function() 
{ 
//DO some action 
///////////// 
gotoAndStop("new12"); 
die(); 
newLevel(); 
}