4

SoundManager2 Flash コンポーネントは、特定のグローバル JavaScript 変数 (soundManager) がグローバル スコープに存在する必要があります。このようにして、Flash Player は SoundManager2 JavaScript API と通信します。

問題は、AMD (require.js) を使用して Web アプリケーションを構築する場合、妥協してこのグローバル変数を存在させる必要があることです。

SoundManager を含むアプリケーションを構築する AMD の方法を壊さない方法はありますか?

4

1 に答える 1

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 shim を要求し、それを独自のモジュール コードで使用します。

define(['soundmanager2'], function(soundManager) {
    soundManager.setup({ ... });
    soundManager.beginDelayedInit();
    // The following may help Flash see the global.
    window.soundManager = soundManager;
    return soundManager;
});
于 2012-11-06T19:28:26.587 に答える