2012年4月20日 星期五

SoundManager 延遲初始化

在使用JavaScript做音樂播放上
SoundManager是個很好的工具,可以偵測環境以Flash或HTML5做播放
不過在設計上有一個很大的問題是
當載入SoundManager的JS檔案
他就會立刻initial產生出一個window.soundManager物件
讓你可以用global方式使用window.soundManager做聲音的控制

有問題的是
在物件初始化完成之前
你必需要使用soundManager.url 設定要使用的swf檔案路徑

以官網上的sample來看,設定url的時間點都是在跟init的程序搶時間
除非你在網頁上以inline的方式寫入soundManager.url
否則如果這設定在init程序完成後才設定,那麼soundManager抓不到swf
而造成使用失敗

要如何禳soundManager可以延遲init,以保證soundManager可以正常運作
1.在載入soundManager.js前,先設定
window.SM2_DEFER = true;

2.在載入soundManager.js後
執行
window.soundManager = new SoundManager();    
soundManager.url = "swf/";
soundManager.beginDelayedInit();
這樣就可以保證可以安全運作了

沒有留言: