试图在JS中检测Enter键

时间:2014-09-05 08:00:13

标签: javascript

所以我有一个游戏,我试图阻止它开始,除非用户按下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/

3 个答案:

答案 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
    }
}

};

Fiddle Key Events

在你的听众身上添加这个功能..

document.onkeydown = function(evt) {
    if (evt.keyCode == 13) {
        started = true;
        init();
        loop();    
    }
}

Updated and working Game


完整参考Complete Handling Key Events

答案 2 :(得分:-2)

我更喜欢使用jquery

$(document).keypress(function(e)
{
    if (e.which == 13) 
    {
        //Your code
    }
});