如何在使用javascript onkeydown事件为画布游戏停止facebook滚动条移动?

时间:2011-06-10 07:28:00

标签: javascript facebook html5 canvas

我使用HTML5 Canvas Element,Javascript for 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 个答案:

答案 0 :(得分:1)

document.onkeydown功能结束时(在snake.js中的第197行之后),添加

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

这可以防止浏览器响应事件,而不是执行您的功能。

您可能还需要使用这三行替换第161行的return null;