Trending News
關於FLASH AS3.0的SOUND_COMPLETE?
大家好~我想請問AS3.0的SOUND_COMPLETE問題,
最近看了書上說,
想要製作一個無限循環的音樂可以用SOUND_COMPLETE,
於是我參考範例做了個簡單的測試檔,卻發現並不能無限循環。
這是利用外部載入音效檔的,
程式碼如下:
stop();
var trumpetReq:URLRequest = new URLRequest("bgMusic/horn.mp3");
var trumpet:Sound = new Sound(trumpetReq);
var tSChannel:SoundChannel = trumpet.play();
function doRepeat(event:Event):void {
tSChannel = trumpet.play();
}
tSChannel.addEventListener(Event.SOUND_COMPLETE, doRepeat);
但是我發現,根本沒辦法無限循環,只有跑2次而已,
是因為讀取完音樂檔後,doReapet只再跑了一次的關係嗎?
於是我將doRepeat內的條件改為
function doRepeat(event:Event):void {
tSChannel = trumpet.play(0,1000);
}
就可以假象的無限循環1000次了
我去查並沒有更正下載,請問,是我理解能力有問題還是書上打錯,還是請告訴我SOUND_COMPLETE的正確觀念和用法?
3 Answers
- 我是知識家Lv 61 decade agoFavorite Answer
第一點這邊因為是外部load近來你這樣的做法反而是要用按鈕去控制只需要寫下面這類
var my_snd:Sound = new Sound();
var snd_URL:URLRequest = new URLRequest("bgMusic/horn.mp");
my_snd.load(snd_URL);
my_snd.play();
打這樣就可以無限循環了= =用SOUND_COMPLETE 顧名思義這是要完成一個完整的音樂控制器的東西,但是你只是要呼叫音樂然後能無限循環則不用用那麼複雜的做法
如果你想要音樂控制器的作法,在我的部落格有完整資訊有圖有說明也有完成時的樣子
Source(s): 個人,線上教學http://blog.yaduo-arts.com/ - tonyLv 71 decade ago
addEventListener(Event.SOUND_COMPLETE, doRepeat) 可以省略
直接使用 var tSChannel:SoundChannel = trumpet.play(0,9999); 就行了
除非你覺得重播9千9百9拾9次還不夠...
若非得要照書上的方法
將doRepeat改成
function doRepeat(event:Event):void {
tSChannel.removeEventListener(..略..);
tSChannel=trumpet.play();
tSChannel.addEventListener(..略..);
}