簡體   English   中英

為什么我得到 integer 的 NaN?

[英]Why am I getting NaN for integer?

這是我的代碼:

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);
}

我正在使用 arrays 來壓縮配對的類似 x 和 y。 我正在使用文本 function 進行測試,我意識到每個數組的第一個是 NaN。 我知道它是這樣的:

  momentum[0] = (pos[0] - mouseX) / 5;
  pos[0] =+ momentum;

但有什么問題?

此外,在人們用標記說它是重復的垃圾郵件之前,簡單意味着沒有其他這種性質的問題有相關的答案。

mouseX在哪里定義? 它是undefined ,任何數字加上undefined都將等於零。

此外, =++=不同,會導致更多問題

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

您的代碼有兩個問題。 首先是您使用=+而不是+= 第二個是momentum是一個數組,而不是一個數字。 這就是您的代碼現在在您突出顯示的兩行中所做的事情:

  • 評估(pos[0] - mouseX) / 5
  • 將該值保存在momentum數組的 0 position 中。
  • 評估+momentum
  • 將該值保存在pos數組的 0 position 中。

在第三個要點,發生的情況是+momentum評估為NaN 然后你將該值保存在pos數組中。 兩行中的第一行很好。 我認為您想要做的是將momentum[0]添加到pos[0] ,可以這樣完成:

  pos[0] += momentum[0];

the cursor, not away from it.我不確定你的意圖是什么,但我的猜測是你想讓圓圈 gocursor,而不是遠離它。 在這種情況下,您的動量符號錯誤,應該是這樣的:

  momentum[0] = (mouseX - pos[0]) / 5;
  pos[0] += momentum[0];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM