这是我的代码:
createCanvas(windowWidth, windowHeight);
noStroke();
}
var momentum = [0, 0]; //x and y speed
var pos = [650, 300]; //player x and y
var enemiesX = []; //enemies x's
var enemiesY = []; //enemies y's
function draw() {
background(200);
momentum[0] = (pos[0] - mouseX) / 5;
pos[0] =+ momentum;
fill(115);
ellipse(pos[0], pos[1], 30, 30);
text(pos[0] + ", " + pos[1], 20, 20);
}
我正在使用数组来压缩配对的相似x和y。我正在测试text函数,并且意识到 每个 数组的第一个是NaN。我知道这个:
momentum[0] = (pos[0] - mouseX) / 5;
pos[0] =+ momentum;
但是有什么问题吗?
此外,在人们用带有重复标记的垃圾邮件之前,这种简单性意味着没有其他这种性质的问题有相关的答案。
答案 0 :(得分:1)
mouseX
在哪里定义?它是undefined
,任何数字加上undefined
将等于零。
此外,=+
与+=
不同,并且会引起进一步的问题
答案 1 :(得分:0)
使用parsetInt
避免使用NaN
,并进一步检查NaN
createCanvas(windowWidth, windowHeight);
noStroke();
}
var momentum = [0, 0]; //x and y speed
var pos = [650, 300]; //player x and y
var enemiesX = []; //enemies x's
var enemiesY = []; //enemies y's
function draw() {
background(200);
mouseX = parseInt(mouseX);
if(mouseX === NaN){
alert('Not a number exception');
}
else{
momentum[0] = (pos[0] - mouseX) / 5;
pos[0] =+ momentum;
fill(115);
ellipse(pos[0], pos[1], 30, 30);
text(pos[0] + ", " + pos[1], 20, 20);
}
}
答案 2 :(得分:0)
您的代码有两个问题。首先是您使用的是 =+
而不是 +=
。第二个是 momentum
是一个数组,而不是一个数字。这就是您的代码在您突出显示的两行中正在执行的操作:
(pos[0] - mouseX) / 5
momentum
数组的 0 位置。+momentum
pos
数组的 0 位置。在第三个要点中,+momentum
的计算结果为 NaN
。然后将该值保存在 pos
数组中。两行中的第一行没问题。我认为您想要做的是将 momentum[0]
添加到 pos[0]
,可以这样做:
pos[0] += momentum[0];
我不确定你的意图,但我的猜测是你想让圆圈朝向光标,而不是远离它。那样的话,你的动量符号就错了,应该是这样的:
momentum[0] = (mouseX - pos[0]) / 5;
pos[0] += momentum[0];