如何在for循环外调用变量?

时间:2015-03-12 12:23:27

标签: javascript canvas scope

我认为这是一个特例。由于我在当前函数之外有更新函数,因此我必须在更新中访问变量(对象)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;
            }
        }
    }

2 个答案:

答案 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
}