Слушатель потребляет ключи даже с холста?

0

У меня есть игра, которую я сделал в холсте, который слушает клавиши w, a, d и стрелки. Однако, когда я ухожу с холста и нажимаю кнопку "Нажмите здесь, чтобы подписаться" под холстом и попробуйте ввести w, a или d, тогда они не будут печататься.

Я использую JQuery для кнопки и HTML5 Canvas для игры.

Что вызывает это и любая идея, как остановить его? Есть ли способ остановить слушателя при нажатии кнопки и запустить его снова, когда экран JQuery закрыт?

Вот он: http://www.slimedrop.com

Теги:
canvas
keylistener

1 ответ

0

Похоже, что вы слушаете ключевые события во всем окне.

Вы можете разрешить самому холсту получать ключевые события, указав индекс табуляции.

Затем слушайте ключевые события на вашем холсте, а не в окне.

Затем обработчик ключей холстов больше не будет получать ключевые события, когда пользователь изменяет фокус на вашу форму подписки.

    // get a reference to the canvas
    var canvas=document.getElementById('canvas');

    // set canvas to be a tab stop (necessary to get keydown events)
    canvas.setAttribute('tabindex','0');

    // have handleKeydown handle keydown events on the canvas
    canvas.addEventListener('keydown',handleKeydown,false);

    // set focus to the canvas so keystrokes are immediately handled
    canvas.focus();
  • 0
    Я использую document.body.onkeydown = function (e) {checkKeyDown (e);} Есть ли способ сделать так, чтобы это был холст вместо документа?
  • 0
    Да, приведенный выше код позволит вам обрабатывать ключевые события только с холста. Просто установите tabindex и слушайте на холсте. canvas.addEventListener ( 'KeyDown', yourKeyDownHandler, ложь);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню