mousemove не запускает каждый кадр, когда происходит событие клавиатуры - PullRequest
2 голосов
/ 08 февраля 2020

В идеале в браузере 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.

Я пишу сетевую игру, поэтому мне нужно следить за тем, чтобы позиция мыши обновлялась каждый кадр. Любые решения, пожалуйста?

1 Ответ

0 голосов
/ 08 февраля 2020
t0 = new Date().getTime()
window.onmousemove = function() {
    t = new Date().getTime()
    if (t-t0 > 2)
        console.log(t-t0)
    t0 = t
}

это сделает console.log () go сумасшедшим быстро, не будет пропускать при быстром перемещении мыши, также проверено, что ваш код не пропускает при нажатии клавиш на Chrome, Windows10

также вам следует рассмотреть возможность использования основной l oop для вашей игры для обработки и управления временем, кадрами и событиями

...