理想情况下,在浏览器中,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。
我正在写一个Web动作游戏,所以我需要确保每帧鼠标位置都会更新。有什么解决办法吗?
答案 0 :(得分:0)
t0 = new Date().getTime()
window.onmousemove = function() {
t = new Date().getTime()
if (t-t0 > 2)
console.log(t-t0)
t0 = t
}
这将使console.log()快速发疯,当您快速移动鼠标时不会跳过,还测试了在Windows 10,Chrome 10上按下键时代码不会跳过
您还应该考虑使用游戏的主循环来处理和管理时间,帧和事件