改寫動機:原版我跑不出來……

Gustavo Ribeiro Amigo 的 Javascript Sound Kit 讓你用 JavaScript 操作網頁上的 mp3 音效,用的是 Flash 所以在跨瀏覽器方面表現不錯。

應自己需要,把原本的 Sound.js 改寫為 Soundbb.js,內容大致一樣只是寫作風格不同;原本的 SoundBridge.as 則是加上另一個 fla 編譯為 SoundBridgeBridge.swf(多包一層所以名稱也多個 Bridge……)。主要修改點如下:

  1. 改名 Soundbb.js 和 SoundBridgeBridge.swf
  2. Prototype.js (1.6.0) 的 Class.create 寫成一個 Soundbb Class
  3. 增加 Soundbb._isReady 和 Soundbb.onReady() 免得哪壺不開提哪壺 → 錯誤
  4. 增加 Soundbb._enabled 可全面開關 Sound 方法有效/無效
  5. 建立物件時可傳入 { autoLoadSound: somepath.mp3 } 便會在 ready 時先行讀取
  6. SoundBridge.as 裡拿掉了 this.sound.checkPolicyFile = true; 因為我編譯不過,對不起……
  7. Flash 裡加了 System.security.allowDomain("*"); 避開跨網域存取的安全性限制

基本使用例:

var se = null;

document.observe("dom:loaded", function() {
  Soundbb.swfLocation = 'SoundBridgeBridge.swf';   // 預設值為 '/SoundBridgeBridge.swf'
  se = new Soundbb({ autoLoadSound: 'sound.mp3' });  // 預先讀取(其實是用 se.loadSound('sound.mp3', false); )
});

someAction = function(){  // 需要音效的時候
  se.start();
};

詳細用法請參閱 ActionScript 2.0 的 Sound API,JavaScript Sound Kit 原設計就是直接叫 Flash 的方法;也可參看原版 Javascript Sound Kit 和它在 SourceForge 上的專案頁。

原始碼檔案在這裡,著作權聲明:原作者 Gustavo Ribeiro Amigo 保留所有權利 Copyright © 2006, Gustavo Ribeiro Amigo All rights reserved.