Javascript 当鼠标移动得更快时,无法捕捉所有鼠标坐标
我已经写了下面的代码来计算鼠标移动的坐标Javascript 当鼠标移动得更快时,无法捕捉所有鼠标坐标,javascript,jquery,Javascript,Jquery,我已经写了下面的代码来计算鼠标移动的坐标 $(document).mousemove(function(e){ console.log(e.pageX + ", " + e.pageY); }); 小提琴是什么. 我的问题是,当我慢慢移动鼠标时,我能够看到控制台中所有鼠标移动的坐标。但当我走得更快时,我看不到所有的东西。只计算了少数。我的代码有问题吗?没有。这是操作系统的设计行为。这不是浏览器的错;浏览器只提供它从操作系统获得的信息。您将需要对它们进行内插(即计算中间的点)。浏览器只会在
$(document).mousemove(function(e){
console.log(e.pageX + ", " + e.pageY);
});
小提琴是什么.
我的问题是,当我慢慢移动鼠标时,我能够看到控制台中所有鼠标移动的坐标。但当我走得更快时,我看不到所有的东西。只计算了少数。我的代码有问题吗?没有。这是操作系统的设计行为。这不是浏览器的错;浏览器只提供它从操作系统获得的信息。您将需要对它们进行内插(即计算中间的点)。浏览器只会在每一个新记号(例如每0.01秒)返回鼠标位置 令人高兴的是,鼠标位置只是偶尔检查一次,否则操作系统会立即冻结 肺泡内出血可能看起来像
var posX, posY;
$(document).mousemove(function(e){
var points = [];
if(posX && posY) {
// calculate a straight line that the mouse moved over
// It gets more difficult if you want to take e.g.
// the current curved path into account
var diffX = e.pageX - posX;
var diffY = e.pageY - poxY;
var length = Math.round(Math.sqrt((diffY*diffY)+(diffX*diffX)));
for(n=0;n<length;n++) {
var pointX = posX + (n/length) * diffX;
var pointY = posY + (n/length) * diffY;
points.push({x:pointX,y:pointY});
}
}
points.push({x:e.pageX,y:e.pageY});
posX = e.pageX;
poxY = e.pageY;
for(point in points) {
console.log(point.x + ", " + point.y);
}
});
var-posX,posY;
$(文档).mousemove(函数(e){
var点=[];
if(posX&&posY){
//计算鼠标移动过的直线
//如果你想学英语,那就更难了。
//将当前曲线路径考虑在内
var diffX=e.pageX-posX;
var diffY=e.pageY-poxY;
变量长度=Math.round(Math.sqrt((diffY*diffY)+(diffX*diffX));
对于(n=0;nNo,如果鼠标移动过快,则可能是因为勾号太慢而无法记录所有鼠标移动。但是,您可以计算两个坐标之间的直线。请提供关于“您将需要对它们进行内插(即,计算它们之间的点)”的示例。添加了一个示例实现来回答!非常感谢您花费时间。但我看不出区别:-(您应该自己做1、2、3和4。当然,还要记录您计算的分数。这没那么难:-)所以我给你写了这一切…你仍然可以自己做这件事,而不需要深入思考。你明白发生了什么,对吗?