2012-09-12

在 LimeJS 播放音樂的問題(lime.audio.Audio)

在 LimeJS 使用以下的程式播放音樂。
var snd = new lime.audio.Audio('music/my.mp3');
snd.play(); 
播不出來,也沒出錯,但是 LimeJS 附的範例就是這樣寫也播的出來,傷腦筋。

用 alert 除錯時,發現只要在 play 之前有 alert 的話,在 FireFox 就播得出聲音,但是在 Chrome 還是不行!

依此類堆一下,猜測「也許是載入音樂檔需要一點時間」,那就加上 setTimeout 吧。
var snd = new lime.audio.Audio('music/my.mp3');
setTimeout(function(){
  snd.play();
}, 1000);
在 FireFox 與 Chrome 都可行,運氣真好!

2012/9/13 補正:
原來 lime.audio.Audio 有提供 API 判斷載入否!
function playAudio(snd) {
  if (snd == null) {
    return;
  }
  if (snd.isPlaying()) {
    return;
  }
  if (snd.isLoaded()) {
    snd.play();
  }
  setTimeout(function(){
    playAudio(snd);
  }, 100);
}; 
---

沒有留言:

張貼留言