2014-09-05 1 views
0

Итак, у меня есть игра, и я пытаюсь удержать ее от запуска, если пользователь не нажал клавишу Enter.Попытка обнаружить ключ ввода в JS

Это код, у меня есть для этого:

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/

Edit: я понял это! Вот программа рабочая: http://jsfiddle.net/84c2k5kg/6/

+1

вам не кажется, чтобы захватить нажатия клавиш в любом месте, что плотная петля может работать o n их. –

+0

Игра реагирует на нажатия клавиш, потому что я могу перемещать змею, поэтому я не уверен, что вы имеете в виду? – Light1c3

+0

'do {if (code == 13) {code = 13; }/* ... * /} while (code === 13); 'Это ... странно. Можете ли вы рассказать о том, чего вы пытаетесь достичь? –

ответ

-2

Я предпочитаю использовать Jquery

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

Пожалуйста, разместите решение проблемы на желаемом/помеченном языке/библиотеке/технологии ** сначала **, затем без курса, не стесняйтесь добавлять альтернативные решения. – Nope

+0

Как бы добавить это в свой код? Я никогда не использовал jquery – Light1c3

+0

Simple :) скачать lib на jquery.com и в файл заголовка добавить файл сценария: тогда вы можете добавить этот код в Michal

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(); 
} 
+0

Это красиво! Im пытаясь tweek это так, что, когда они умирают, это поднимает тот же самый экран. Но, надеюсь, я могу это сделать сам! – Light1c3

+0

Если мой код помог вам, PLS принять его в качестве правильного ответа. – TeeDeJee

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

Смежные вопросы