我写了一个小脚本,旨在输出鼠标移动的速度。我遇到的问题是,偶尔会有不准确的数字输出,从而影响整个结果。此外,当用户释放鼠标按钮时,脚本并不总是终止。为解决第一个问题,我认为可以将值放入数组中并确定异常值,但我希望这里的某个人告诉我我做了什么愚蠢的事情,并且有一种方法可以修复我的代码,使其更有效率。
JS:
JS:
var test_obj = {
mouse_coors: function(x2) {
$(document).on("mousemove", function(e) {
var x = e.clientX,
velocity = Math.abs(x-x2);
console.log(velocity);
$(document).off("mousemove");
setTimeout(function() {
x2 = e.clientX;
test_obj.mouse_coors(x2);
}, 100);
});
$(document).on("mouseup", function() {
$(document).off("mouseup").off("mousemove");
});
},
};
$(document).ready(function() {
$('#testbox').on("mousedown", function() {
test_obj.mouse_coors(0);
});
});
HTML:
JSfiddle:http://jsfiddle.net/mkb2t/
(注:此处为原文内容,无需翻译)
setTimeout
不旨在精确。 - Justin L..one("mousemove", …)
,但不像您的脚本。尽管如此,它仍然无法考虑设置侦听器和获取第一个事件之间的时间。[这里有类似的东西](http://jsfiddle.net/mkb2t/4/),可以进行比较。 - BergisetTimeout
和setInterval
不会在您期望的确切时间触发,这会导致不准确的计算。请注意。 - Dragan Okanovic