2017-04-22 206 views
0

我有問題,我需要找到解決方案。 :dJavascript關鍵聽衆按任意鍵

因此,這裏是我的代碼:

var inputEnabled = true 
var pressedKey = {} 
window.addEventListener('keydown',function(e) { 
    pressedKey[e.keyCode || e.which] = true; 
}, true); 
window.addEventListener('keyup',function(e) { 
    pressedKey[e.keyCode || e.which] = false; 
}, true); 

function keyBinding() { 
    if (*my problem*) { 
     loadMenu() 
    } 

    if (inputEnabled == true) { 
     setTimeout("keyBinding()", 25) 
    } 
} 

我要的是,當按下任意鍵我想加載一個菜單,但我做的,我怎麼來檢測按鍵不算什麼。

任何幫助,將不勝感激。

+0

[檢測可能的複製箭頭在JavaScript按鍵](http://stackoverflow.com/questions/5597060/detecting-arrow-key-presses-in-javascript) – Tymek

+0

把'keyBinding'方法放入'addEventListener'方法怎麼樣?在'addEventListener('keydown')'你調用loadMenu(),在'addEventListener('keyup')'你卸載你的菜單 – soywod

回答

0

試試這個地方*my problem*是在你的代碼:

if(Objects.keys(pressedKey).length>0){ // checks if the object 'pressedKey' contains atleast one key 
    loadMenu() 
} 

不過我建議爲重點直接按的鍵偵聽器裏面檢查:

var inputEnabled = true 
var menuLoaded = false; // this will indicate if the menu is loaded already 
var pressedKey = {} 
window.addEventListener('keydown', function (e) { 
    if(!menuLoaded){ // check if menu is not open 
     loadMenu() 
     menuLoaded = true 
    } 
    pressedKey[e.keyCode || e.which] = true; 
}, true); 
window.addEventListener('keyup', function (e) { 
    pressedKey[e.keyCode || e.which] = false; 
}, true); 
+0

謝謝大家和Manuel的事情是,它應該加載我的js遊戲[http ://imgur.com/a/7sMSW](http://imgur.com/a/7sMSW)然後再按任意鍵將在菜單屏幕上選擇第一個選項「新遊戲」...但是,我會嘗試解決方案,檢查pressedKeyKey值的長度。謝謝 –

+0

函數loadMenu()只是一個例子... –

+0

好吧,你的問題更一般。要檢查是否按下了特定的按鍵,請在您的keyBinding函數內使用「if(pressedKey [13])」。 13是鍵碼,在這種情況下是輸入鍵。使用這個漂亮的頁面找出其他關鍵代碼:http://keycode.info/ –