JavaScript MouseEvent.movementX и движение Y большие шипы
После блокировки указателя в Chrome при перемещении мыши MouseEvent.movementX и MouseEvent.movementY иногда возвращают очень большое число, которое, кажется, составляет примерно половину размера окна.
Вот минимальный пример кода:
<html>
<body>
<canvas id="canvas" width="100" height="100" style="border: 1px solid">
</canvas>
<script>
var canvas = document.getElementById("canvas");
canvas.addEventListener("mousedown", function() {
canvas.requestPointerLock();
});
document.addEventListener("mousemove", function() {
if(Math.abs(event.movementX) > 100)
console.log(event.movementX);
});
</script>
</body>
</html>
Я догадываюсь, что когда вы вызываете requestPointerLock(), он фактически не блокирует мышь в одной позиции, а просто скрывает ее. Когда мышь уходит из окна, она снова привязывает мышь к центру, что вызывает большой всплеск переменной.
В чем причина большого всплеска и как я могу это исправить?