Я думаю, что это особый случай. Поскольку у меня есть функция обновления вне текущей функции, я должен получить доступ к переменной (объекту) sinEnemy в обновлении. Как я могу это сделать, когда мне нужны i и j? Это не полный код, как вы можете видеть, так как он принимает сотни или строк. Это всего лишь цикл for. (Х2). Итак, все, что мне нужно, - это доступ к функции sinEnemy в функции обновления.Как вызвать переменную вне цикла for?
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;
}
}
}
Похоже, проблема немного сложнее. Вы, вероятно, хотите * установить * все IxJ sinEnemys, как двумерный массив где-то в другом месте, чтобы их x и y не всегда были точным числом при каждом перерисовании холста. Для этого потребуется собственный цикл double-for, но это будет выполняться только один раз. Затем внутри * этого * для цикла просто извлекайте sinEnemy двумя индексами. – Katana314