SoundManager2和require.js

时间:2012-09-13 10:15:42

标签: requirejs soundmanager2

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

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

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

1 个答案:

答案 0 :(得分:6)

使用RequireJS shim config 将非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;
});