猿问

为什么我得到 NaN 整数?

这是我的代码:


function setup() {

  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;

但有什么问题吗?


此外,在人们用垃圾邮件说它是重复的标志之前,简单意味着没有其他这种性质的问题有相关的答案。


慕少森
浏览 165回答 3
3回答

手掌心

在哪里mouseX定义?它是undefined,任何数字加undefined将等于零。另外,=+不一样+=,会导致进一步的问题

ABOUTYOU

使用parsetInt以避免NaN并添加进一步检查NaN   createCanvas(windowWidth, windowHeight);    noStroke();}var momentum = [0, 0]; //x and y speedvar pos = [650, 300]; //player x and yvar enemiesX = []; //enemies x'svar enemiesY = []; //enemies y'sfunction 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);    }}

肥皂起泡泡

您的代码有两个问题。第一个是您正在使用=+而不是+=. 第二个是它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];
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答