我对此功能有点问题:
function create_enemies(rows, columns) {
var i, j;
var x_position = 0;
var y_position = 0;
var id = 0;
enemies_array = new Array(rows);
for (i = rows - 1; i >= 0; i--) {
enemies_array[i] = new Array(columns);
for (j = columns - 1; j >= 0; j--) {
x_position = j * (enemy_squadron_width / 4) + (ship_width / 2);
y_position = i * (enemy_squadron_height / 4);
enemies_array[i, j] = {
x : x_position,
y : y_position,
width : ship_width,
height : ship_height,
speed : 2,
id : id
};
id++;
console.log("this one's fine: " + enemies_array[i, j].y);
}
}
for (i = rows - 1; i >= 0; i--) {
for (j = columns - 1; j >= 0; j--) {
console.log("This one's not fine: " + enemies_array[i, j].y);
}
}
}
正在发生的事情是,在第一个console.log上,正确打印了Y属性,但是在第二个console.log中,数组的每个元素中的每个Y都被设置为0.不知何故,Y属性在两者之间丢失。第一个外部for-loop和第二个。
我肯定错过了一些非常明显的东西,并开始感到有些疯狂。
有什么想法吗?
非常感谢你。
编辑 - 我应该提到其他所有属性都没问题。只有Y被重置
答案 0 :(得分:1)
你走了:
function create_enemies(rows, columns) {
var x_position = 0;
var y_position = 0;
var enemy_squadron_width = 100;
var enemy_squadron_height = 100;
var ship_width = 100;
var ship_height = 100;
var id = 0;
var enemies_array = new Array(rows);
for (var i = rows - 1; i >= 0; i--) {
enemies_array[i] = new Array(columns);
for (var j = columns - 1; j >= 0; j--) {
var x_position = j * (enemy_squadron_width / 4) + (ship_width / 2);
var y_position = i * (enemy_squadron_height / 4);
enemies_array[i][j] = {
x : x_position,
y : y_position,
width : ship_width,
height : ship_height,
speed : 2,
id : id
};
id++;
console.log("this one's fine: " + enemies_array[i][j].y);
}
}
for (var i = rows - 1; i >= 0; i--) {
for (var j = columns - 1; j >= 0; j--) {
console.log("This one's not fine: " + enemies_array[i][j].y);
}
}
}
create_enemies(10,10);
您需要通过[i] [j]来访问数组的元素。