SoundManager2和require.js

ope*_*rid 4 soundmanager2 requirejs

SoundManager2 flash组件需要一个特定的全局JavaScript变量(soundManager)才能存在于全局范围内.这样flash播放器就可以与SoundManager2 JavaScript API进行通信.

问题是,当你想使用AMD(require.js)构建web应用程序时,你必须做出妥协并让这个全局变量出现.

有没有办法不打破AMD构建应用程序的方式,包括SoundManager?

Mar*_*ars 6

使用RequireJS shim config将非AMD库包装为导出全局变量的模块:http: //requirejs.org/docs/api.html#config-shim

requirejs.config({
    paths: {
        'soundmanager2' : 'some/path/soundmanager2'
    },
    shim: {
        'soundmanager2': {
            exports: 'soundManager'
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

然后,要求SoundManager2垫片像任何其他依赖项一样,并在您自己的模块代码中使用它:

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

  • 根据[本示例](http://www.schillmania.com/projects/soundmanager2/demo/template/deferred-example.html),您可能会发现在调用后需要调用`soundManager.beginDelayedInit();` `设置()`. (3认同)