Я делаю игру, в которой у меня есть несколько объектов плитки, хранящихся в массиве, и я пытаюсь вызвать функцию «обновление», чтобы нарисовать плитки на экране.Как вызвать функцию для всех свойств объекта?
Мой сценарий:
var canvas = document.getElementById("game canvas");
canvas.width = 600;
canvas.height = 300;
var g = canvas.getContext("2d");
var grass = new Image();
grass.src = "grass.png";
setInterval(draw,1000/60);
function tile(x,y,img) {
this.x = x;
this.y = y;
this.img = img;
this.update = function() {
g.drawImage(this.img,this.x,this.y);
}
}
var maps = {
map1:{
tiles:[
new tile(0,0,grass),
new tile(0,32,grass)
],
update:function() {
for (var i in this.tiles) {
i.update();
}
}
}
};
function draw() {
maps.map1.update();
}
Я также попытался использовать объект вместо массива для контейнера плитки, но это не сработало. Он выводит эту ошибку в консоли:
TypeError: i.update is not a function
попробовать i.apply (нуль, обновление) –
Поиск «JavaScript, итерация массив» и «JavaScript, так как в». – user2864740
http://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript/9329476#9329476, http://stackoverflow.com/questions/500504/why-is-using-for -in-with-array-iteration-such-the-bad-idea, http://stackoverflow.com/questions/3010840/loop-through-array-in-javascript/3010848#3010848 – user2864740