确定在Javascript中是否按下了键

时间:2011-10-26 02:08:38

标签: javascript canvas

我正在使用canvas元素和Javascript为我的大学项目编写平台游戏。我很顺利,但我仍然坚持如何在我的玩家更新循环中查看某个键是否被按下。

我这样想:

if(d) {
    // move player right
} else if(a) {
    // move player left
} else if(w) {
    // move player up
} else if(s) {
    // move player down
}
显然,那是psudocode。在我可以找到的Javascript中按键操作的唯一资源是事件,如果在某个点按下某个键,则无需查看。

任何人都可以对此有所了解吗?

3 个答案:

答案 0 :(得分:4)

如果键是向上或向下,则设置4个布尔变量。在keydown上将其设置为true,在keyup上将其设置为false。如果(key_d == true){//键d被按下}

,你可以做

这是最好的方法。它不是“hacky”,添加事件监听器来处理按键。

答案 1 :(得分:1)

我认为您不能使用keydownkeyupkeypress来决定按哪些键。但是,您可以在其中设置和取消设置某些全局标志,而不是在其中一个事件处理程序中运行此代码。然后,当这个代码运行时(我假设它将在某种间隔?),它可以检查标志。

答案 2 :(得分:0)

您需要一个事件监听器。

//function foo, returns keypress
function foo(e){
var evt=(e)?e:(window.event)?window.event:null;
if(evt){
    var key=(evt.charCode)?evt.charCode:
        ((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0));
    return key;
}

//set event listener
//you could also attach this to your canvas, but that will require tricks
//to make the canvas focusable
document.addEventListener('keydown', foo);