【发布时间】:2020-02-08 12:15:40
【问题描述】:
理想情况下,在浏览器中,mousemove 应该在鼠标不断移动时触发每一帧。但是当一个键被按下(或重复)或释放时,mousemove 停止发射一两帧。
我们可以用下面的代码来测试一下:
t0 = new Date().getTime()
window.onmousemove = function() {
t = new Date().getTime()
if (t-t0 > 20)
console.log(t-t0)
t0 = t
}
尝试保持鼠标移动。只有当您按下、释放一个键或按住一个键(因为它是重复的)时,控制台才会打印 mousemove 的延迟。
我已经在 Firefox 和 Chrome 上进行了测试。我使用 macOS 10.14.2。
我正在编写一个网络动作游戏,所以我需要确保鼠标位置在每一帧都更新。请问有什么解决办法吗?
【问题讨论】:
-
在 Chrome 中检查后,我发现有很多情况下记录了
t-t0。请记住,JS 有一个循环,许多事情可能会导致某种延迟。在此页面上尝试并将鼠标悬停在您问题中的标签上。这也会导致日志。 -
没错@JamieDixon,很多电话的发生也需要时间
标签: javascript dom-events mousemove