Как остановить перемещение полос прокрутки в Facebook после использования события javascript onkeydown для игры на холсте? - PullRequest
1 голос
/ 10 июня 2011

Я создал игру, используя HTML5 Canvas Element, Javascript для Facebook.Вы можете посетить его здесь, http://apps.facebook.com/snaqe_game. Проблема, с которой я сталкиваюсь, заключается в том, что когда я нажимаю клавишу со стрелкой вниз, используемую для перемещения змеи, реализованной с использованием события Javascript onkeydown , игра работает нормально, но полосы прокруткиидти вверх и вниз.Я попытался сделать текстовое поле (#activ) и установить фокус на него.Это сработало, но когда я попытался сделать его невидимым, это не удалось.

document.onkeydown = function(event) {
    document.getElementById('activ').focus()
    if (!allowPressKeys) {
        return null;
    }
    var keyCode;
    if(event == null) {
        keyCode = window.event.keyCode;
    } else {
        keyCode = event.keyCode;
    }

    switch(keyCode) {
        case 37:
            if (direction != "right") {
                moveLeft();
            }
            break;

        case 38:
            if (direction != "down") {
                moveUp();
            }
            break;

        case 39:
            if (direction != "left") {
                moveRight();
            }
            break;

        case 40:
            if (direction != "up") {
                moveDown();
            }
            break;

        default:
            break;
    }
}

1 Ответ

1 голос
/ 10 июня 2011

В конце вашей функции document.onkeydown (после строки 197 в snake.js) добавьте

if (event.preventDefault) { event.preventDefault(); }
if (event.stopPropagation) { event.stopPropagation(); }
return false;

Это предотвращает реакцию браузера на событие, помимо выполнения вашей функции.

Вам также может понадобиться заменить return null; в строке 161 этими тремя строками.


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