Question

Je crée un jeu de saisie dont j'ai "app.js" comme jeu principal et je charge "words.js" par requirejs.

Je dois utiliser > 2 mots mais je suis toujours naïf avec javascript et je ne suis pas sûr que ce soit correct dans AMD.N'importe qui pourrait me le signaler.J'apprécierai vraiment cela.

Je pense que ce serait comme suivre le code mais cela ne fonctionne pas et me donne une erreur

"Erreur de type non détectée :l'objet n'est pas une fonction"

[app.js]

require(['jquery','app/canvas','app/words'], function($,game_screen,words){
   var words1 = new words();
   var words2 = new words();
   .
   .
});

[mots.js]

define(['app/canvas'],function(canvas){
   var word_list=[{"word1"},{"word2"},...];
   return {
        addWord: function(new_word){
             .
             .
});
Était-ce utile?

La solution

En ce moment, vous renvoyez un objet de votre module de mots : { addWord: function() {} ... }.Donc dans app.js, lorsque vous définissez words pour être égal à l'objet renvoyé par le module Words, vous invoqueriez les fonctions en faisant words.addWord().

Si vous souhaitez plutôt utiliser le new words() syntaxe dans app.js, vous devrez changer votre module de mots pour renvoyer une fonction au lieu d'un objet (d'où l'erreur) :

define(['app/canvas'],function(canvas) {
   var word_list=[{"word1"},{"word2"},...]; // not sure how this is used

   function words() {
     // some code
   }

   words.prototype.addWords = function() {
     // some code
   }

   return words;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top