2017-03-05 60 views
2

我目前正在製作一個小型滾動畫布遊戲,並且我正在嘗試實施怪物。我爲怪物保留了兩個陣列,一個用於他們的x位置,另一個用於他們的y位置。出於某種意想不到的原因,這兩個數組最多可以填充1152個元素,其中兩個是預定義的,其他都是「NaN」。JavaScript Array意外地被NaN填滿

下面是該程序的鏈接: http://codepen.io/kenshin791011/pen/WpxQmg

(功能monsterMove是在關鍵的運行下去)

var monsterx = [13, 5], 
    monstery = [41, 42]; 
function monsterMove() { 
    for(var i = 0; i < monsterx.length; i++) { 
     var z = Math.floor(Math.random() * 4); 
     switch(z) { 
      case 0: 
       monsterx[i] -= 1; 
       break; 
      case 1: 
       monstery[i] -= 1; 
       break; 
      case 2: 
       monsterx[i] += 1; 
       break; 
      case 3: 
       monstery[i] += 1; 
       break; 
     } 
    } 
} 
+3

不是你在問什麼,而是你曾經想過將X和Y座標一起存儲:'monsters = [{x:13,y:41},{x:5,y:42}]'?看起來更適合我。 – nnnnnn

+0

哦,我不知道我可以這樣做XD –

回答

1

從JS在你codepen下面的循環正在更新monsterx數組元素0到cGrid.length

​​

鑑於第一次幾乎所有這些指數的都是undefined,而undefined + 1NaN,這就是你如何得到一個數組充滿NaN - 除了前兩個以有效數字開頭的元素。

你有一個類似的循環,更新monstersy

(以供將來參考,如果你不知道如何變量被更新,第一步是通過該變量的代碼進行搜索。這就是我所做的發現上述問題。)

+0

感謝您的幫助!我會確保我會按照您的提示,每當這樣的事情再次發生。 –