为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我得到 NaN 整数?

为什么我得到 NaN 整数?

慕少森 2021-12-02 10:27:21
这是我的代码:function setup() {  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);  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;但有什么问题吗?此外,在人们用垃圾邮件说它是重复的标志之前,简单意味着没有其他这种性质的问题有相关的答案。
查看完整描述

3 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

在哪里mouseX定义?它是undefined,任何数字加undefined将等于零。

另外,=+不一样+=,会导致进一步的问题


查看完整回答
反对 回复 2021-12-02
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

使用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);

    }

}


查看完整回答
反对 回复 2021-12-02
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

您的代码有两个问题。第一个是您正在使用=+而不是+=. 第二个是它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];


查看完整回答
反对 回复 2021-12-02
  • 3 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信