奇怪的条件行为Javascript

时间:2017-06-19 15:45:10

标签: javascript debugging if-statement conditional

我有两个功能,一个用于计算距离物体的鼠标距离,另一个用于计算玩家得分。当鼠标离物体至少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;
}

由于某种原因,当距离为50px及以下时,上述结果会导致分数停止。

我尝试输出(mouseDistance<200)条件并且它很好,在距离200px时它表示&#34; true&#34;它只在200px以上停止了。

如果是这样,当鼠标距离为50px时,分数不应该停止更新,但确实如此:P halp

1 个答案:

答案 0 :(得分:1)

当距离为50px及以下时,添加的分数开始达到或低于0.5。舍入删除了添加的分数。

假设距离为40px,玩家的得分为150.新得分为150.4(得分+鼠标距离/ 100)。但当你绕过那个时,你会得到150分,而得分保持不变。