我认为这是一个特例。由于我在当前函数之外有更新函数,因此我必须在更新中访问变量(对象)sinEnemy。 当我需要i和j时,我怎么能这样做?您可以看到这不是完整的代码,因为它需要数百或几行。这只是for循环。 (2次)。 所以,我需要的只是在更新函数中访问sinEnemy。
for(i = 0; i < levelRows; i++){
for(j = 0; j < levelCols; j++){
if(level[i][j] == 3){
// sinEnemy object
var sinEnemy = {
x: j * tileSize,
y: i * tileSize,
width: tileSize,
height: tileSize
}
// Change color to blue
ctx.fillStyle = 'blue';
if(keys[84]){
sinEnemy.x += 15;
}
// Draw sinEnemy
ctx.fillRect(sinEnemy.x, sinEnemy.y, tileSize, tileSize);
// Collide with sinEnemy
rectCollision(player,sinEnemy);
// var x = enemies1[i].x + Math.sin(enemies1[i].speed) * offset;
}
}
}
答案 0 :(得分:0)
使用全局变量,换句话说,在函数之外声明sinEnemy
。
答案 1 :(得分:0)
之前的答案意味着什么但尚未明确的是:
在for循环之外,声明你的sinEnemy
var sinEnemy = new Array();
然后,在你的for循环中,你将把一个新的罪恶的敌人推入你的敌人阵列。
sinEnemy[sinEnemy.length] = {
x: j * tileSize,
y: i * tileSize,
width: tileSize,
height: tileSize
}