我正在使用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中按键操作的唯一资源是事件,如果在某个点按下某个键,则无需查看。
任何人都可以对此有所了解吗?
答案 0 :(得分:4)
如果键是向上或向下,则设置4个布尔变量。在keydown上将其设置为true,在keyup上将其设置为false。如果(key_d == true){//键d被按下}
,你可以做这是最好的方法。它不是“hacky”,添加事件监听器来处理按键。
答案 1 :(得分:1)
我认为您不能使用keydown
,keyup
或keypress
来决定按哪些键。但是,您可以在其中设置和取消设置某些全局标志,而不是在其中一个事件处理程序中运行此代码。然后,当这个代码运行时(我假设它将在某种间隔?),它可以检查标志。
答案 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);