включение клавиатуры

  • Автор темы касатка
  • 25
  • Обновлено
  • 17, May 2024
  • #1
Итак, в моей предыдущей теме у меня была кнопка, но на данный момент эта кнопка заменена ключом.

Например, пробел.

Я хотел скрыть кнопку на 5 секунд.

Но пока это не удалось.

Мой вопрос: как избежать того, чтобы человек дважды нажимал пробел за 5 секунд? Например: игрок нажимает пробел, и интервал длится 5 секунд.

Повторное нажатие пробела приведет к очень серьезным сбоям.

Итак, как мне отключить функцию на 5 секунд после ее вызова? Это мой код:
 

<script>

document.body.onkeyup = function(e){

if(e.keyCode == 32){ // Pressing spacebar should only be able to call once each 5 secs.

var cmd = "<?php echo $row['HEADING']; ?>";

if(cmd == "N") myMoveUp();

if(cmd == "E") myMoveRight();

if(cmd == "S") myMoveDown();

if(cmd == "W") myMoveLeft();

}

if(e.keyCode == 37){

ChangeHeadingKP("W");

}

if(e.keyCode == 38){

ChangeHeadingKP("N");

}

if(e.keyCode == 39){

ChangeHeadingKP("E");

}

if(e.keyCode == 40){

ChangeHeadingKP("S");

}

}

</script>

Код (разметка):

касатка


Рег
15 Sep, 2013

Тем
1

Постов
2

Баллов
12
  • 18, May 2024
  • #2
Спасибо за ответ, Сарак. Я пробовал, но где-то не получилось. На stackoverflow кто-то придумал довольно изящное решение, если кому-то будет интересно:
 

keymanager.suspend();

// play animation, cutscene or whatever

keymanager.resume();

//Those two functions are easy to define, along with the keymanager, as follows:

var keymanager = {

"active": true,

"suspend": () => {

keymanager.active = false;

},

"resume": () => {

keymanager.active = true;

}

};

//All that remains is the key event handler bailing out when keys are deactivated:

document.body.onkeyup = function (e) {

if (!keymanager.active)

{

return; // do not process any keys

}

// rest of your code...

}

Код (разметка):
 

Александр221


Рег
25 Jan, 2016

Тем
0

Постов
3

Баллов
3
Тем
49554
Комментарии
57426
Опыт
552966

Интересно