Почему я получаю NaN для целых чисел? - PullRequest
0 голосов
/ 24 октября 2019

Это мой код:

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

Я использую массивы для сжатия одинаковых х и у, которые в паре. Я тестировал с текстовой функцией, и я понял, что первый из каждого массива равен NaN. Я знаю это так:

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

но что не так?

Кроме того, прежде чем люди рассылают спам с флагами, говоря, что это дубликат, простота означает, что ни у одного другого вопроса такого рода не былоответить.

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Где определено mouseX? Если это undefined, любое число плюс undefined будет равно нулю.

Additonally, =+ не совпадает с += и вызовет дальнейшие проблемы

0 голосов
/ 24 октября 2019

Используйте 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);
    }
}
...