簡體   English   中英

確定是否在Javascript中按下了鍵

[英]Determining if key is pressed down in Javascript

我正在使用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
}

顯然,這是偽代碼。 我可以找到Java按鍵功能的唯一資源是事件,而無法確定是否在某個時間點按下了按鍵。

誰能對此有所啟發?

如果鍵是向上或向下,則設置4個布爾變量。 在keydown上將其設置為true,在keyup上將其設置為false。 比起if(key_d == true){//按下鍵d}

那是最好的方法。 它不是“ hacky”,而是添加事件偵聽器來處理按鍵。

我認為您無法使用keydownkeyupkeypress來確定keypress了哪些鍵。 但是,可以在其中一個事件處理程序中設置和取消設置一些全局標志,而不是在其中一個事件處理程序中運行此代碼。 然后,當此代碼運行時(我假設它會處於某種間隔?),它可以檢查該標志。

您需要一個事件監聽器。

//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);  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM