2017-03-05 35 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

感谢您的帮助!我会确保我会按照您的提示,每当这样的事情再次发生。 –