所以我有一个游戏,我试图阻止它开始,除非用户按下Enter键。
这是我的代码:
var code = (e.keyCode ? e.keyCode : e.which);
var enterpressed = 0;
do {
if(code == 13) { //Enter keycode
enterpressed = 13;
}
ctx.font = "25px Helvetica";
drawStartScreen();
update();
} while (enterpressed === 13);
这是关于JSfiddle的完整程序: http://jsfiddle.net/3aoozxte/6/
编辑:我想通了! 这是程序工作: http://jsfiddle.net/84c2k5kg/6/
答案 0 :(得分:0)
以下是您问题的解决方案。
我在您的keydown
eventlistener中添加了回车键逻辑。因此,当您按Enter键时,它将启动游戏。
我删除了startGameScreen()
中的循环,以防止浏览器重复此无限循环崩溃。
http://jsfiddle.net/3aoozxte/19/
function main() {
canvas = document.createElement("canvas");
canvas.width = COLS*20;
canvas.height = ROWS*20;
ctx = canvas.getContext("2d");
document.body.appendChild(canvas);
ctx.font = "12px Helvetica";
frames = 0;
keystate = {};
started = false;
// keeps track of the keyboard input
document.addEventListener("keydown", function(evt) {
keystate[evt.keyCode] = true;
if(keystate[Key_ENTER] && !started) { // Start the game if it's not started and Enter is pressed.
started = true;
init();
loop();
}
});
document.addEventListener("keyup", function(evt) {
delete keystate[evt.keyCode];
});
//Attempting to create a welcome screen
startGameScreen();
}
function startGameScreen() {
ctx.font = "25px Helvetica";
drawStartScreen();
}
答案 1 :(得分:0)
这可能是您正在寻找的那个。
document.onkeydown = function(evt) {
evt = evt || window.event;
if (evt.ctrlKey && evt.keyCode == 90) {
alert("Ctrl-Z was pressed");
}
else {
var kc = evt.keyCode
switch(kc){
case 13 : alert("Enter was pressed"); break
case 37 : alert("Left Key was pressed"); break
case 38 : alert("Up Key was pressed"); break
case 39 : alert("Right Key was pressed"); break
case 40 : alert("Down Key was pressed"); break
// default : alert(kc + " was pressed");//used to check for key value
}
}
};
在你的听众身上添加这个功能..
document.onkeydown = function(evt) {
if (evt.keyCode == 13) {
started = true;
init();
loop();
}
}
答案 2 :(得分:-2)
我更喜欢使用jquery
$(document).keypress(function(e)
{
if (e.which == 13)
{
//Your code
}
});