Bonjour, je développe actuellement un jeu HTML5. Mon code actuel récupère un fichier JSON avec les données de la map, et la dessine dans un Canvas. Seulement, avant j'utilisais une requête synchrone, donc mon script n'essayait pas de dessiner ma map avant que la requête ne soit finie. Mais maintenant, il essaye avant que la requête ne soit finie (je suis passé en requête asynchrone étant donné que Firefox me le déconseillait, et ça ne marchait pas sous chrome); cela provoque une erreur et le code bloque. Comment faire pour que tout ça marche ? Voila mon code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | function Map(tilewidth, widthintile) { this.tilewidth = tilewidth; this.widthintile = widthintile; this.getJsonData = function (source) { this.source = source; this.xhr = new XMLHttpRequest(); this.xhr.open("GET", this.source); this.xhr.addEventListener('readystatechange', function() { if (this.xhr.readyState === 4 && this.xhr.status === 200) { this.mapData = this.xhr.responseText; this.mapJsonData = JSON.parse(this.mapData); this.terrain = this.mapJsonData.terrain; this.tileset = new Tileset(this.mapJsonData.tileset, this.tilewidth, this.widthintile); } }.bind(this)); this.xhr.send(null); }; this.drawMap = function() { for (var i = 0, l = this.terrain.length; i < l; i++) { var line = this.terrain[i]; var y = i * this.tileset.tilewidth; for (var j = 0, k = line.length; j < k; j++) { this.tileset.drawTile(line[j], j * this.tileset.tilewidth, y); } } }; } |
Sort this.terrain is undefinied. Comment régler mon problème ? Merci d'avance !
+0
-0