我正在创建一个游戏,其中鼠标输入延迟应该是最小的。但是我注意到当你将标签替换为另一个窗口(例如记事本)并返回时,鼠标位置似乎有很大的延迟。当我刷新页面时,它将再次正常工作。这可能是THREEJS独有的问题,但我不确定。有时甚至在我刷新后会滞后,但是ALT + TAB似乎总是会引发我的问题。
以下代码使对象跟随鼠标来说明问题:
function onMouseMove(event) {
event.preventDefault();
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = - (event.clientY / window.innerHeight) * 2 + 1;
var vector = new THREE.Vector3(mouse.x, mouse.y, 0.5);
vector.unproject( camera );
var dir = vector.sub( camera.position ).normalize();
var distance = - camera.position.z / dir.z;
var pos = camera.position.clone().add( dir.multiplyScalar( distance ) );
mouseMesh.position.copy(pos);
mouseMesh.position.set(event.clientX, event.clientY, 0);
};
这是一个小提示,显示我遇到的问题:https://jsfiddle.net/atwfxdpd/10/
要复制问题,只需运行小提琴。按Alt + Tab键切换到计算机上的任何其他窗口。点击所说的窗口。然后回来。
现在,当您移动鼠标时,对象落后于它。有时它也是在你第一次运行它的时候做的。
我的Chrome版本是:版本55.0.2883.87米(64位)(最新) 我在4K屏幕上。所以这可能与它有关。
编辑:调整大小似乎也会导致问题