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(), он фактически не блокирует мышь в одной позиции, а просто скрывает ее. Когда мышь уходит из окна, она снова привязывает мышь к центру, что вызывает большой всплеск переменной.

В чем причина большого всплеска и как я могу это исправить?

0 ответов

Другие вопросы по тегам