Я нашел похожие темы, но они только говорят об удалении начальной задержки, а не о задержке.Хотите добавить Delay к событию Keydown
У меня есть игра, которая перемещает пользователя соответственно, если wasd нажата и перемещает их к следующей координате сетки. Тем не менее, если пользователь удерживает любой из оставшихся ключей, они стреляют почти мгновенно, чего я бы предпочел не иметь. Я попытался создать задержку в движении, которая работает, если вы нажимаете клавишу быстро, но не удерживаете ее. У меня есть следующий код:
window.addEventListener("keydown", onKeyDown, false);
function onKeyDown(event) {
var keyCode = event.keyCode;
if (canMove == true) {
switch (keyCode) {
case 68: //d
keyD = true;
canMove = false;
break;
case 83: //s
keyS = true;
canMove = false;
break;
case 65: //a
keyA = true;
canMove = false;
break;
case 87: //w
keyW = true;
canMove = false;
break;
}
setTimeout(function(){canMove = true;}, 400);
}
checkMovement();
}
Моей проблема: я могу нажать «а», например, и масштаб по всей карте почти мгновенно. Я хочу, чтобы их задержка, например, 200-500 мс, чтобы они двигались с постоянной скоростью. Как это исправить?
Можете ли вы также по st код для достижения масштабирования? –
Установить интервал onkeydown, очистить его onkeyup? – Koborl
Вы пробовали этот http://stackoverflow.com/questions/1909441/jquery-keyup-delay? –