[英]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.