2012-09-13 63 views
4

SoundManager2 flash組件需要特定的全局JavaScript變量(soundManager)才能出現在全局範圍內。這種方式Flash播放器與SoundManager2 JavaScript API進行通信。SoundManager2和require.js

問題是,當您想要使用AMD(require.js)構建Web應用程序時,您必須做出妥協並讓此全局變量存在。

有沒有辦法打破AMD構建應用程序的方式,包括SoundManager?

回答

6

使用RequireJS 墊片配置來包裝你非AMD庫作爲出口的全局變量模塊: http://requirejs.org/docs/api.html#config-shim

requirejs.config({ 
    paths: { 
     'soundmanager2' : 'some/path/soundmanager2' 
    }, 
    shim: { 
     'soundmanager2': { 
      exports: 'soundManager' 
     } 
    } 
}); 

然後,需要SoundManager2墊片像任何其他的依賴,並用它在你自己的模塊代碼:

define(['soundmanager2'], function(soundManager) { 
    soundManager.setup({ ... }); 
    soundManager.beginDelayedInit(); 
    // The following may help Flash see the global. 
    window.soundManager = soundManager; 
    return soundManager; 
}); 
+3

按[這個例子](http://www.schillmania.com/projects/soundmanager2/demo/template/deferred-example.html),你可能會發現你需要調用'soundManager.begi調用'setup()'後調用nDelayedInit()。 – cmbuckley

+0

保存幾個小時,並遵循cbuckley的建議:) –