2015-09-07 67 views
2

我一直在做一個簡單的基於JavaScript的OOP文本遊戲,它使用字符串替換和變量調整綁定到按鈕.onclick事件。我被要求添加熱鍵以方便訪問,而且我一直在努力如何做到這一點。快捷鍵爲Javascript遊戲GUI

首先,我嘗試使用JSQuery熱鍵腳本和.bind命令,但是這看起來會非常耗時,因爲我必須將每一個.onclick作爲熱鍵重新編碼,甚至在解除綁定時,關閉與腳本上的鍵相關的每個事件。

我覺得最好的辦法是如果我可以將密鑰編碼給gui,也就是說當你按下「1」時,它激活按鈕1的按鈕,這樣熱鍵將是靜態的除非該按鈕被禁用),但我不知道如何做到這一點。我剛剛使用html按鈕(即輸入類型=「button」value =「」disabled =「disabled」id =「button1」),我懷疑我需要更復雜的東西?

在此先感謝您的幫助,谷歌已無用。

[編輯 - 代碼的一般描述]

遊戲的工作方式非常簡單,通過功能與不同的文本/按鈕(和不同的onclick事件綁定到這些按鈕)新事件的呼喚。作爲一個例子,在啓動畫面代碼:

function startScreen() { 
$(document).ready(function() { 
$('#text').html("Game title and info"); 
$('#button1').val("Start Game"); 
$('#button1').attr("disabled", false); 
$("#button1").one("click", function() { 
textClear(); 
buttonClear(); 
nameScreen(); 
}); 

$("#button2").val("Load Game"); 
$('#button2').attr("disabled", false); 
$("#button2").one("click", function() { 
textClear(); 
buttonClear(); 
loadData(); 
}); 

$("#button6").val("Settings"); 
$('#button6').attr("disabled", false); 
$("#button6").one("click", function() { 
textClear(); 
buttonClear(); 
settingsScreen(); 
}); 
}); 
} 

由於通過按鈕執行的代碼的功能,什麼熱鍵確實爲好,這是我的問題與使用jQuery庫代碼之間的一個變化。

回答

2

當一個鍵被按下時,事件onkeypress被觸發。此事件提供像一些值:

  • keyCode
  • charCode
  • which

所以,你可以這樣做:

window.onkeypress = function (event) { 
    // the keyCode value for the key 1 is 49, for the key 2 is 50 
    if (event.keyCode == 49) { 
     // execute the same code as clicking the button 1 
     console.log("The key 1 was pressed."); 
    } else if (event.keyCode == 50) { 
     // execute the same code as clicking the button 2 
     console.log("The key 2 was pressed."); 
    } 
}; 

現在,當用戶訪問你的網站他可以按鍵盤上的按鍵1或2併發射相同的邏輯c點擊鼠標左鍵點擊按鈕「1」和「2」(類似於<input id="button1">)。

如果你真的有很多熱鍵,那麼這也會很麻煩,但是不知道你的代碼我幾乎不能給你一個完整的解決方案。我希望我的回答能給你一些想法如何進一步進行。

編輯:

的話題延伸閱讀: http://unixpapa.com/js/key.html