2014-09-05 45 views
0

所以我有一個遊戲,我試圖阻止它開始,除非用戶按Enter鍵。試圖檢測JS中的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/

+1

似乎你不隨時隨地的捕捉按鍵緊圈可以工作o他們。 – 2014-09-05 08:02:46

+0

遊戲響應按鍵,因爲我可以移動蛇,所以林不知道你的意思? – Light1c3 2014-09-05 08:03:52

+0

'do {if(code == 13){code = 13; }/* ... * /}而(代碼=== 13);'這是...奇怪。你能詳細說明你在那裏想達到什麼嗎? – 2014-09-05 08:04:12

回答

-2

我更喜歡使用jQuery

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

請首先發布解決問題所需的/標記的語言/庫/技術**,然後再脫離課程,隨時添加替代解決方案。 – Nope 2014-09-05 08:16:22

+0

我如何將此代碼添加到我的代碼中?我從來沒有用過jquery – Light1c3 2014-09-05 08:16:48

+0

簡單:)在jquery.com上下載lib並添加到頭文件添加腳本文件: 然後您可以將此代碼添加到 Michal 2014-09-05 08:19:40

0

這裏是解決你的問題。

我將回車鍵邏輯添加到您的​​eventlistener中。所以當你按下回車鍵開始遊戲。 我刪除了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(); 
} 
+0

那美麗!我試圖馴服它,所以當他們死了它會帶來相同的屏幕。但希望我可以自己做! – Light1c3 2014-09-05 08:46:17

+0

如果我的代碼幫助你,請接受它作爲正確的答案。 – TeeDeJee 2014-09-05 11:04:27

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