Я создаю сетевую скачную игру для двух игроков, где одна лошадь управляется с помощью клавиш со стрелками, а другая управляется с помощью клавиш asdw. Я использую html и javascript. Моя проблема заключается в том, что программа только иногда обнаруживает события, связанные с клавиатурой, (примерно в 65% случаев), поэтому игра не очень чувствительна к нажатиям клавиш. Мой код выглядит следующим образом:Моя веб-игра javascript не очень чувствительна к событиям onkeyup. Как я могу заставить программу обнаруживать все нажатия клавиш, а не только некоторые из них?
Мой отношение HTML код:
<body onkeyup="steer(event)" onload = "init()">
Мой отношение Javascript является:
function init(){
...code that counts 3,2,1,go!...
setTimeout(function(){doMove();}, 3000);
}
function steer(event){
key = (event.keyCode);
if(key == 38) up();
if(key == 40) dn();
if(key == 37) lt();
if(key == 39) rt();
if(key == 87) up2();
if(key == 83) dn2();
if(key == 65) lt2();
if(key == 68) rt2();
}
}
function doMove(){
...code for moving the horses...
setTimeout(doMove, 5);
}
вверх(), дп() и т.д .. функции просто код для изменения скоростей лошадей на основе событий keyup.
Программа распознает только 65% нажатий клавиш (прибл.), Даже если играет только один игрок (это не имеет никакого отношения к одновременным нажатиям клавиш).
Подобно тому, как предложение: 'ключ = (event.keyCode || event.which) ; '. Но это не ответ, просто примечание :) – RaphaelDDL
В настоящее время 'key' является глобальной переменной, а не локальной для функции управления. Сначала попробуйте использовать 'var key' вместо' key'. Наверное, не ответ, но он вырезает несколько потенциальных ошибок. – iblamefish
Откуда вы знаете, что он не обнаруживает нажатия клавиш? Записывали ли вы каждый вызов на 'steer'? Ваша клавиатура в порядке? Btw, обычно вы используете onkeydown вместо -up. – Bergi