首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JavaScript中存储鼠标移动数据的最有效的处理方法是什么?

在JavaScript中存储鼠标移动数据的最有效的处理方法是什么?
EN

Stack Overflow用户
提问于 2011-10-13 12:40:38
回答 2查看 1.3K关注 0票数 1

我试图准确记录鼠标在网页上的移动位置(移动到像素)。我有以下代码,但结果数据中存在差距。

代码语言:javascript
运行
复制
var mouse = new Array();
$("html").mousemove(function(e){
    mouse.push(e.pageX + "," + e.pageY);
});

但是,当我查看记录的数据时,这是我所看到的一个例子。

代码语言:javascript
运行
复制
76,2 //start x,y
78,5 //moved right two pixels, down three pixels
78,8 //moved down three pixels

这最好看起来更像:

代码语言:javascript
运行
复制
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

有没有更好的方法来逐个像素地存储鼠标移动数据?我的目标对于一个网页来说是不是太不现实了?

EN

回答 2

Stack Overflow用户

发布于 2011-10-13 12:47:58

您只能按照提供给您的速度保存该信息。mousemove事件的触发速率由浏览器决定,通常最高可达60 by。因为你的指针移动速度肯定可以超过60px/秒,所以除非你做一些插值,否则你将无法填充空格。

对我来说,这听起来是个好主意,想象一下当你把鼠标跳到屏幕的另一边时,同时触发1920个mousemove事件会有多麻烦(和性能拖累)-我甚至不认为鼠标本身的轮询速度足够快,游戏鼠标的速度不会超过1000 go。

请在此处查看实时帧率测试:http://jsbin.com/ucevar/

关于插值,请参见实现Bresenham's line algorithmthis question,您可以使用它来查找缺失点。这是一个困难的问题,iPad的PenUltimate app实现了一些令人惊叹的插值,使线条画看起来完全自然和流畅,但在web上没有任何关于它的东西。

至于存储数据,只需推送一个[x,y]数组而不是一个字符串。缓慢的事件处理函数也会降低刷新率,因为事件会被丢弃。

票数 3
EN

Stack Overflow用户

发布于 2011-10-13 12:59:58

有没有更好的方法来逐个像素地存储鼠标移动数据?

你对“更好”的标准是什么?

我的目标对于一个网页来说是不是太不现实了?

如果你的目标是在每次光标进入一个新的像素时存储一个新的点,是的。还要注意的是,浏览器像素不一定1:1映射到屏幕像素,特别是在CRT显示器的情况下,它们几乎肯定不会。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7749538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档