using requireJS pour charger dynamicment des fichiers js

Je crée un RPG. Je voudrais charger dynamicment des fichiers JS de dialog NPC en fonction du niveau actuel.

A l’origine, je faisais en haut de mon fichier game.js … mais je ne veux pas continuer à le faire pour chaque fichier npc_dialog.js.

Je préférerais faire quelque chose comme:

 if (map == 1) { require(js/npc_dialog_level_1.js); if (map == 2) { require(js/npc_dialog_level_2.js); 

Je suivais le tutoriel de requireJS , mais je ne comprends pas bien:

a) Le téléchargement requireJS n’inclut pas le dossier helper / utils.js et le fichier spécifié dans l’exemple:

  project-directory/ project.html scripts/ main.js require.js helper/ util.js 

b) Comment utiliser la fonction require: require(["helper/util"], function(util) { Sur le changement de carte, j’aimerais simplement placer le chemin d’access au fichier associé npc_dialog_level.js . Où npc_dialog_level.js fichier Exiger du code et que dois-je y passer pour charger le fichier JS correct?


Chaque fichier npc_dialog_level contient un object js. J’utilise ça dans mon jeu pour lire le dialog

 var dialog = { quests : { Lee : { "1 - Introductions" : 

Mettre à jour:

J’ai essayé:

 //load NPC dialog given the map loadNpcDialog : function (dialogNumber) { require("npc_dialog_level_" + dialogNumber + ".js", function(dialog) { // log(dialog); }); }, 

Donne:

 Uncaught Error: Invalid require call http://requirejs.org/docs/errors.html#requireargs require.js:166 

Vous devez utiliser des crochets pour votre liste de dépendances lorsque vous appelez require , comme ceci:

 //load NPC dialog given the map loadNpcDialog : function (dialogNumber) { require(["npc_dialog_level_" + dialogNumber + ".js"], function(dialog) { // log(dialog); }); }, 

Si vous n’utilisez pas de crochets, vous utilisez alors la forme pseudo-synchrone de require , qui serait utilisée comme var dialog = require("npc_dialog_level_" + dialogNumber + ".js") : var dialog = require("npc_dialog_level_" + dialogNumber + ".js") . Toutefois, cette forme pseudo-synchrone ne fonctionnerait pas dans votre cas.

Si vous souhaitez éventuellement transformer ces fichiers en fichiers JSON ou XML, vous pouvez utiliser le text! plugin pour les charger.

En fait, votre contenu de dialog est entièrement en JavaScript, puis un chargement tardif est assez facile.

 function runNpcDialog(number) { require(["npc-dialog-" + number + ".js"], function(dialog) { // Run your dialog here. }); } 

Sinon, si vos informations sont davantage au format JSON / XML, utiliser ajax serait une meilleure option.

EDIT: syntaxe fixe