访问数组

时间:2017-06-06 22:09:45

标签: javascript arrays loops

我确信这是一个简单的问题,但无论如何我都会问它。基本上我试图用更少的代码在javascript(没有jquery)中执行以下操作:

var Ground = [];

function gameLoop()
{
    Gravity += 0.2

    if(Ground[0].isCollided(Player))
    {
        Player.dy = 0;
        Gravity = 0;
    }
    if(Ground[1].isCollided(Player))
    {
        Player.dy = 0;
        Gravity = 0;
    }
    if(Ground[2].isCollided(Player))
    {
        Player.dy = 0;
        Gravity = 0;
    }

    Player.dy = Gravity;
}

我从我使用javascript和html5画布制作的游戏代码中极大地简化了代码。 你看到的是我的地面机械师。当玩家与地面块碰撞时,玩家的.dy值将不再随着重力而改变。

你在上面看到的是我通常会怎么做,但是如果我有50个FallingM变量,这会占用大量的空间。是否可以做类似的事情:

if(Ground[i].isCollided(Player))
{
    Player.dy = 0;
    Gravity = 0;
}

因此,无论我添加多少地面变量,该功能仍会运行?提前谢谢!

2 个答案:

答案 0 :(得分:2)

你应该使用一个循环:

for(var x of Ground) {
   if(x.isCollided(Player)) {
      Player.dy = 0;
      Gravity = 0;
      break;
   }
}

答案 1 :(得分:0)

  

请记住,绝地的力量来自循环。但要注意。 Map,   reducesome。黑暗的一面是他们。一旦你开始黑暗   路径,它将永远支配你的命运。

if (grounds.some(ground => ground.isCollided(player))) {
  player.dy = 0;
  gravity = 0;
}