私は HTML5 ゲームを作成しており、マトリズを使用してマップを保存しています。しかし、今は $getJson を使用して json ファイルからその値を読み取っていますが、問題は、Web インスペクターを使用してマトリックスの値を変更するとマップが変更されることですが、その関数をコードで直接呼び出すと、エラー:
game.js:51TypeError: 'undefined' is not an object (evaluating 'levels.Level1')
51行目: mapa.loadMap(levels.Level1.board);
Web インスペクタで「mapa.loadMap(levels.Level1.board)」関数を呼び出した場合にのみ機能するのはなぜですか?
function map(){
this.loadMap = function (l){
var j= 0;
for (var i = 0; i < l.length; i++) {
var object = l[i];
for (property in object) {
var value = object[property];
this.board[j][property] = value;
}
j++;
}
}
this.width = 10;
this.height = 8;
this.image = new Image();
this.image.src = "images/level1/tiles.png";
this.board = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 2],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[8, 0, 0, 0, 33, 1, 1, 1, 1, 1],
[8, 0, 0, 0, 0, 0, 0, 37, 0, 0],
[25, 26, 0, 0, 0, 0, 0, 38, 0, 0],
[27, 28, 5, 5, 6, 7, 0, 38, 0, 0],
[1, 1, 1, 1, 1, 9, 5, 39, 5, 5],
];
(...)
そのことは忘れてください。XD
私のコードはスケッチなので混乱していますが、次の方法で解決しました:
$(document).ready(function(){
init();
});
$(window).load(function () {
console.log(levels.Level1.board);
mapa = new map();
render();
});
助けてくれてありがとう:)そして私の英語でごめんなさいXD