關於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

Rating
  • 1 decade ago
    Favorite 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/
  • 1 decade ago

    恩恩~

    謝謝你的意見喔~

    獲益良多

  • tony
    Lv 7
    1 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(..略..);

    }

Still have questions? Get your answers by asking now.