gpt4 book ai didi

Javascript 数组给出 NaN

转载 作者:行者123 更新时间:2023-11-30 18:08:27 25 4
gpt4 key购买 nike

我有一些 HTML 应该在 Canvas 周围弹跳球,但是当我将它们设置为随机位置并使用 alert( 进行测试时,存储坐标的数组似乎是“NaN” "坐标"+ (cirX[i]) + "x "+ (cirY[i]));。这将返回“坐标 NaN x NaN”。我试过用一个没有阵列的球来做,它奏效了。我不确定是我的数组编码不好还是其他原因。这是我的 HTML:

<!Doctype HTML>
<head>
<script>
var cirX = [];
var cirY = [];
var chX = [];
var chY = [];
var width;
var height;

function initCircle(nBalls) {
alert(nBalls)
for(var i = 0; i<nBalls;i++) {
alert("loop " + i)
chX[i] = (Math.floor(Math.random()*200)/10);
chY[i] = (Math.floor(Math.random()*200)/10);
cirX[i] = Math.floor(Math.random()*width);
cirY[i] = Math.floor(Math.random()*height);
alert("Co-ordinates " + (cirX[i]) + " x " + (cirY[i]));

circle(cirX[i],cirY[i],3);
setInterval('moveBall(i)',10);
}
}

function moveBall(ballNum) {
if(cirX[ballNum] > width||cirX[ballNum] < 0) {
chX[ballNum] = 0-chX[ballNum];
}
if(cirY[ballNum] > height|| cirY[ballNum] < 0) {
chY[ballNum] = 0-chY[ballNum];
}
cirX[ballNum] = cirX[ballNum] + chX[ballNum];
cirY[ballNum] = cirY[ballNum] + chY[ballNum];
circle(cirX[ballNum],cirY[ballNum],3);

}

function circle(x,y,r) {
var c=document.getElementById("canvas");
var ctx=c.getContext("2d");
canvas.width = canvas.width;
ctx.fillStyle="#FF0000";
ctx.beginPath();
ctx.arc(x, y, r, 0, Math.PI*2, true);
ctx.fill();
width = canvas.width;
height = canvas.height;
}
</script>
</head>
<body>
<canvas id="canvas" width="400" height="300">
</canvas>
<script>
initCircle(3); //this sets the number of circles
</script>
</body>

我已经查看了如何初始化数组 e.c.t,但我似乎做对了?预先感谢您的帮助!

编辑:
尽管解决了上述问题,但只有一个球以不同的速度移动,尽管 moveBall() 中的变量 ballNum 按预期从 0 到 2 变化(通过添加 测试)警报(ballNum))。有谁知道为什么吗?

最佳答案

你调用这条线

cirX[i] = Math.floor(Math.random()*width);

width 仍未定义时。所以你只能得到 NaN 作为结果。

要从 setInterval 正确调用 moveBall 函数,您可以使用

(function(i) { // embedds i to protect its value (so that it isn't the one of end of loop
setInterval(function(){moveBall(i)}, 10);
})(i);

关于Javascript 数组给出 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15232812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com