2017-06-06 72 views
0

我确定这是一个简单的问题,但我总是问这个问题。基本上,我试图用更少的代码做以下的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

您正在寻找循环的奇迹。 – SLaks

+2

远远超出循环之地的是'Array.prototype.some'的神秘王国...... –

+0

[在JavaScript中通过数组循环]的可能重复(https://stackoverflow.com/questions/3010840/loop通过数组在JavaScript中?rq = 1) –

回答

2

你应该使用一个循环:

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

@SterlingArcher对不起,随时downvote。只是这样,如果你不知道什么是循环,用JavaScript开发游戏有点奇怪。 –

+2

虽然这可能是真的,但在堆栈溢出答案中没有空间。保持信息和专业。此外,今天的JS开发人员不使用循环来迭代数组,我们使用'for..of'。 –

+0

只记得有一次,我们都是不知道循环是什么的开发人员。 –

0

请记住,一个绝地的力量来自循环流动。但要小心。 Mapreducesome。他们是黑暗的一面。一旦你开始了黑暗的道路,它将永远支配你的命运。

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