2017-06-06 88 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; 
}