Почему мои клавиатурные входы не регистрируются? - PullRequest
0 голосов
/ 03 июля 2018

Я делаю игру Snake, используя HTML и javascript. Игра работает, нажимая клавиши со стрелками для перемещения змеи. Работает нормально 90% времени. Однако иногда, когда я очень быстро ввожу 2 клавиши, регистрируется только одна клавиша. Например, если я нажму кнопку «Вверх» и «Влево» с задержкой <10 мс, змея пойдет только вверх, а не влево. </p>

Я не уверен, почему это происходит, поэтому я не знаю, с чего начать.

Мой слушатель событий:

window.onkeydown = function (e){
  var keys = {
    37: 'left',
    38: 'up',
    39: 'right',
    40: 'down'
  }
  var dx = 0;
  var dy = 0;

  switch (keys[e.keyCode]){
    case 'left':
      dx = -1;
      break;
    case 'up':
      dy = 1;
      break;
    case 'down':
      dy = -1;
      break;
    case 'right':
      dx = 1;
      break;
    default:
      return;
  }

Возможно ли, что моя проблема будет исправлена ​​путем изменения на addEventListener?

Другая теория, которая у меня есть, заключается в том, что браузер думает, что я ввожу 2 клавиши одновременно, поэтому мне придется кодировать их для постановки в очередь.

Или, возможно, Javascript не читает входные данные, когда выполняет логику?

Может кто-нибудь дать мне подсказку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...