Я создал холст, и я добавил к нему события мыши:
canvas = document.getElementById('canvas');
context = canvas.getContext('2d');
canvas.width = screenWidth;
canvas.height = screenHeight;
...
// CALLED AT START:
function setup() {
// Mouse movement:
document.onmousemove = function(e) {
e.preventDefault();
target.x = e.pageX;
target.y = e.pageY;
angle = Math.atan2((target.y - localPlayer.getY()),
(target.x - localPlayer.getX()));
// Distance to mouse Check:
var dist = Math.sqrt((localPlayer.getX() - target.x)
* (localPlayer.getX() - target.x) + (localPlayer.getY() - target.y)
* (localPlayer.getY() - target.y));
var speedMult = dist / (canvas.height / 4);
socket.emit("update", {
...
});
}
document.onmousedown = function(e) {
e.preventDefault();
}
}
Теперь проблема заключается в том, что я удерживаю единственную левую кнопку мыши и одновременно перемещаю мышь, моя игра значительно отстает. Простое перемещение мыши не вызывает отставания. Я проверил это на хроме и на firefox. Кажется, что я могу только воссоздать проблему на хроме. Использование средней кнопки мыши или правой кнопки имеет такое же поведение в игре и не вызывает отставания. Только при использовании левой кнопки мыши происходит задержка.
Я просмотрел ответы и обнаружил, что я должен предотвращать поведение по умолчанию следующим образом:
e.preventDefault();
Но это не решило проблему. Я также попытался обновить номер на экране, который представляет позицию мыши. И он обновляется нормально. Только сама игра отставала. Может быть, onMouseMoved никогда не вызывается, пока левая кнопка удерживается нажатой? Но тогда почему он называется с помощью средней и правой кнопки?
Проблема должна заключаться в коде, который я вызываю внутри метода перемещения, потому что он отлично работает, когда я не держу левый ключ, и он хорошо работает на firefox. Должно быть что-то еще происходит.
EDIT: Я решил записать на хром, чтобы посмотреть, что происходит. Вот результат:
Что действительно странно, когда я нажимаю среднюю кнопку мыши или правую кнопку, игра делает то же самое, но она вообще не отстает. Что вы делаете хром?
EDIT: проверьте здесь: www.vertix.io обратите внимание, что не все, похоже, могут воспроизвести эту проблему.
Спасибо за ваше время.