Requirejs SoundManager2和require.js

Requirejs SoundManager2和require.js,requirejs,soundmanager2,Requirejs,Soundmanager2,SoundManager2 flash组件需要一个特定的全局JavaScript变量(soundManager)出现在全局范围内。通过这种方式,flash player与SoundManager2 JavaScript API进行通信 问题是,当您想要使用AMD(require.js)构建web应用程序时,您必须做出妥协,让这个全局变量存在 有没有办法不破坏AMD构建包括SoundManager在内的应用程序的方式?使用RequireJSshim config将非AMD库包装为导出全局变量的模块

SoundManager2 flash组件需要一个特定的全局JavaScript变量(soundManager)出现在全局范围内。通过这种方式,flash player与SoundManager2 JavaScript API进行通信

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


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

使用RequireJSshim config将非AMD库包装为导出全局变量的模块:

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

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

根据,您可能会发现需要调用
soundManager.beginDelayedInit()setup()
后进行code>操作。节省几个小时,并遵循cbuckley的建议:)
define(['soundmanager2'], function(soundManager) {
    soundManager.setup({ ... });
    soundManager.beginDelayedInit();
    // The following may help Flash see the global.
    window.soundManager = soundManager;
    return soundManager;
});