2017-08-05 91 views
0

我没有得到一个计算器精确解/度计算,所以我创建了一个问题获取鼠标移动速度

var timestamp = null; 
var mY = 0; 
$(document).mousemove(function(e) { 
    var now = Date.now(); 
    currentmY = e.pageY; 



    mY = e.pageY; 
    timestamp = now; 
}); 

我需要一个速度值,当鼠标移动垂直角度。

https://jsfiddle.net/58tjr9o1/

+0

如何abt [this](https://stackoverflow.com/a/6417110/3551786) – Durga

+0

鼠标移动速度 – ShibinRagh

回答

1

的速度只需要简单地花时间划分的距离:

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 /秒`。

请参阅this updated fiddle

1

下面的代码将始终与ID =“更新速度”跨度更新鼠标的垂直运动速度。代码是不言自明的,它只是保存当前位置,前一个位置,当前时间和前一个时间,然后使用此公式计算速度(速度=(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; 


});