获取鼠标移动速度
Get mouse moving speed
我没有从 Whosebug 得到确切的 solution/calculation 所以我创建了一个问题
var timestamp = null;
var mY = 0;
$(document).mousemove(function(e) {
var now = Date.now();
currentmY = e.pageY;
mY = e.pageY;
timestamp = now;
});
我需要获取鼠标移动垂直角度时的速度值。
以下代码会在id="update-speed"的span内不断更新鼠标的垂直移动速度。代码不言自明且易于理解,它只是保存了当前位置、先前位置、当前时间和先前时间,然后使用此公式计算速度 (speed = (pos2 - pos1) / (time2 - time1).
HTML
<span id="update-speed">Update speed</span>
JS
var prev_time = new Date();
var prev_pos_y = 0;
$(document).mousemove(function(e) {
var now = new Date();
current_pos_y = e.pageY;
time_interval = now.getTime() - prev_time.getTime();
if(time_interval != 0)
{
speed = ( Math.abs(current_pos_y - prev_pos_y) / time_interval );
}
else
speed = 0;
console.log(speed);
$('#update-speed').text(speed);
prev_time = now;
prev_pos_y = current_pos_y;
});
速度就是距离除以所用时间:
speed = distance / time
距离currentmY - mY
,时间now - timestamp
。所以最后,你得到:
var timestamp = 0;
var mY = 0;
$(document).mousemove(function(e) {
var now = Date.now();
currentmY = e.screenY;
var dt = now - timestamp;
var distance = Math.abs(currentmY - mY);
var speed = Math.round(distance / dt * 1000);
console.log(dt, distance, speed);
document.getElementById("speed").innerHTML = speed;
mY = currentmY;
timestamp = now;
});
注意 * 1000
,因为时间戳以毫秒为单位。速度在这里pixels/second.
我没有从 Whosebug 得到确切的 solution/calculation 所以我创建了一个问题
var timestamp = null;
var mY = 0;
$(document).mousemove(function(e) {
var now = Date.now();
currentmY = e.pageY;
mY = e.pageY;
timestamp = now;
});
我需要获取鼠标移动垂直角度时的速度值。
以下代码会在id="update-speed"的span内不断更新鼠标的垂直移动速度。代码不言自明且易于理解,它只是保存了当前位置、先前位置、当前时间和先前时间,然后使用此公式计算速度 (speed = (pos2 - pos1) / (time2 - time1).
HTML
<span id="update-speed">Update speed</span>
JS
var prev_time = new Date();
var prev_pos_y = 0;
$(document).mousemove(function(e) {
var now = new Date();
current_pos_y = e.pageY;
time_interval = now.getTime() - prev_time.getTime();
if(time_interval != 0)
{
speed = ( Math.abs(current_pos_y - prev_pos_y) / time_interval );
}
else
speed = 0;
console.log(speed);
$('#update-speed').text(speed);
prev_time = now;
prev_pos_y = current_pos_y;
});
速度就是距离除以所用时间:
speed = distance / time
距离currentmY - mY
,时间now - timestamp
。所以最后,你得到:
var timestamp = 0;
var mY = 0;
$(document).mousemove(function(e) {
var now = Date.now();
currentmY = e.screenY;
var dt = now - timestamp;
var distance = Math.abs(currentmY - mY);
var speed = Math.round(distance / dt * 1000);
console.log(dt, distance, speed);
document.getElementById("speed").innerHTML = speed;
mY = currentmY;
timestamp = now;
});
注意 * 1000
,因为时间戳以毫秒为单位。速度在这里pixels/second.