2012-09-13 4 views
4

Le composant Flash SoundManager2 nécessite une variable JavaScript globale spécifique (soundManager) pour être présent dans la portée globale. De cette façon, Flash Player communique avec l'API JavaScript SoundManager2. Le problème est que lorsque vous voulez construire votre application web en utilisant AMD (require.js) vous devez faire un compromis et laisser cette variable globale être présente.SoundManager2 et require.js

Y a-t-il un moyen de ne pas casser la façon AMD de construire une application, y compris SoundManager?

Répondre

6

Utilisez RequireJS config shim pour envelopper votre bibliothèque non-AMD en tant que module qui exporte la variable globale: http://requirejs.org/docs/api.html#config-shim

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

Ensuite, nécessitent la cale SoundManager2 comme toute autre dépendance, et l'utiliser dans votre propre code du module:

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

Comme par [cet exemple] (http://www.schillmania.com/projects/soundmanager2/demo/template/deferred-example.html), vous pouvez constater que vous devez appelez 'soundManager.begi nDelayedInit(); 'après avoir appelé' setup() '. – cmbuckley

+0

Épargnez-vous quelques heures et suivez les conseils de cbuckley :) –