我试图准确记录鼠标在网页上的移动位置(移动到像素)。我有以下代码,但结果数据中存在差距。
var mouse = new Array();
$("html").mousemove(function(e){
mouse.push(e.pageX + "," + e.pageY);
});但是,当我查看记录的数据时,这是我所看到的一个例子。
76,2 //start x,y
78,5 //moved right two pixels, down three pixels
78,8 //moved down three pixels这最好看起来更像:
76,2 //start x,y
77,3 //missing
78,4 //missing
78,5 //moved right two pixels, down three pixels
78,6 //missing
78,7 //missing
78,8 //moved down three pixels有没有更好的方法来逐个像素地存储鼠标移动数据?我的目标对于一个网页来说是不是太不现实了?
发布于 2011-10-13 12:47:58
您只能按照提供给您的速度保存该信息。mousemove事件的触发速率由浏览器决定,通常最高可达60 by。因为你的指针移动速度肯定可以超过60px/秒,所以除非你做一些插值,否则你将无法填充空格。
对我来说,这听起来是个好主意,想象一下当你把鼠标跳到屏幕的另一边时,同时触发1920个mousemove事件会有多麻烦(和性能拖累)-我甚至不认为鼠标本身的轮询速度足够快,游戏鼠标的速度不会超过1000 go。
请在此处查看实时帧率测试:http://jsbin.com/ucevar/
关于插值,请参见实现Bresenham's line algorithm的this question,您可以使用它来查找缺失点。这是一个困难的问题,iPad的PenUltimate app实现了一些令人惊叹的插值,使线条画看起来完全自然和流畅,但在web上没有任何关于它的东西。
至于存储数据,只需推送一个[x,y]数组而不是一个字符串。缓慢的事件处理函数也会降低刷新率,因为事件会被丢弃。
发布于 2011-10-13 12:59:58
有没有更好的方法来逐个像素地存储鼠标移动数据?
你对“更好”的标准是什么?
我的目标对于一个网页来说是不是太不现实了?
如果你的目标是在每次光标进入一个新的像素时存储一个新的点,是的。还要注意的是,浏览器像素不一定1:1映射到屏幕像素,特别是在CRT显示器的情况下,它们几乎肯定不会。
https://stackoverflow.com/questions/7749538
复制相似问题