奇怪的条件行为 Javascript
Weird condition behaviour Javascript
我有两个函数,一个计算鼠标与物体的距离,另一个计算玩家得分。当鼠标距离物体至少200px时开始计分,鼠标越近得分越高。
function calculateMouseDistance() {
document.onmousemove = handleMouseMove;
var rect = c.getBoundingClientRect();
function handleMouseMove(e) {
mouseX = e.clientX - rect.left;
mouseY = e.clientY - rect.top;
}
mouseDistanceX = object.x - mouseX;
mouseDistanceY = object.y - mouseY;
mouseDistance = Math.round(Math.sqrt((mouseDistanceX*mouseDistanceX)+(mouseDistanceY*mouseDistanceY)));
}
function calculateScore() {
if (mouseDistance<200) {
score = Math.round(score + (mouseDistance / 100));
}
document.getElementById("tester").innerHTML = "Score: " + score + " " + "Distance: " + mouseDistance;
}
由于某些原因,当距离为 50 像素及以下时,上述结果会导致分数停止。
我尝试输出 (mouseDistance<200)
条件,它很好,在 200px 距离它说 "true" 并且它只在 200px 以上停止为真。
如果是这样,那么当鼠标距离为 50px 时分数不应该停止更新,但它确实会停止更新:P halp
当距离为 50px 及以下时,添加的分数开始达到或低于 0.5。四舍五入会删除添加的分数。
假设距离是 40px,玩家的分数是 150。新的分数是 150.4(分数 + 鼠标 distance/100)。但是当你四舍五入时,你得到 150,分数保持不变。
我有两个函数,一个计算鼠标与物体的距离,另一个计算玩家得分。当鼠标距离物体至少200px时开始计分,鼠标越近得分越高。
function calculateMouseDistance() {
document.onmousemove = handleMouseMove;
var rect = c.getBoundingClientRect();
function handleMouseMove(e) {
mouseX = e.clientX - rect.left;
mouseY = e.clientY - rect.top;
}
mouseDistanceX = object.x - mouseX;
mouseDistanceY = object.y - mouseY;
mouseDistance = Math.round(Math.sqrt((mouseDistanceX*mouseDistanceX)+(mouseDistanceY*mouseDistanceY)));
}
function calculateScore() {
if (mouseDistance<200) {
score = Math.round(score + (mouseDistance / 100));
}
document.getElementById("tester").innerHTML = "Score: " + score + " " + "Distance: " + mouseDistance;
}
由于某些原因,当距离为 50 像素及以下时,上述结果会导致分数停止。
我尝试输出 (mouseDistance<200)
条件,它很好,在 200px 距离它说 "true" 并且它只在 200px 以上停止为真。
如果是这样,那么当鼠标距离为 50px 时分数不应该停止更新,但它确实会停止更新:P halp
当距离为 50px 及以下时,添加的分数开始达到或低于 0.5。四舍五入会删除添加的分数。
假设距离是 40px,玩家的分数是 150。新的分数是 150.4(分数 + 鼠标 distance/100)。但是当你四舍五入时,你得到 150,分数保持不变。