2016-12-30 3 views
1

jquery에서 제 1 게임에 대한 플레이어 컨트롤러를 만들고 싶지만 뭔가 잘못되었습니다. 도와 줄수있으세요?keydown 이벤트가 작동하지 않습니다.

$('canvas').keydown(function(e) { 
    alert('in function'); 
    if (e.keyCode == 37) {//37 - strzalka w lewo 
     moveleft(); 
    } 
    if (e.keyCode == 39) {//39 - strzalka w prawo 
     moveright(); 
    } 
    if (e.keyCode == 40) {//40 - strzalka w dol 
     movedown(); 
    } 
    if (e.keyCode == 38) {//38 - strzalka w gore 
     moveup(); 
    } 
    if (e.keyCode == 32) {//32 - spacja 

    } 
}); 

function moveup() { 
    gracz.speedY -= 1; 
} 

function movedown() { 
    gracz.speedY += 1; 
} 

function moveleft() { 
    gracz.speedX -= 1; 
} 

function moveright() { 
    gracz.speedX += 1; 
} 

내가 이벤트 핸들러가 캔버스에서 가장 신뢰할 수에 키 관련 이벤트를 가져

+1

는'canvas'에 키 관련 이벤트를 가져 오는 BE에서 신뢰할 성. 대신'canvas'의 부모 요소를 사용하거나'window'도 사용하십시오 : https://jsfiddle.net/ayb9edLm/ –

+0

이 질문을보십시오 : http://stackoverflow.com/questions/7613433/첨부 - 키보드 이벤트 - 투 - HTML5 - 캔버스 –

+0

감사는이 프로젝트에 도움이 될해야합니다 :) –

답변

1

작동하지 않습니다, 화살표를 누르면. 예를 들어 대신 캔버스의 부모 요소, 심지어 창을 사용하여

$(window).keydown(function(e) { 
    // your code here... 
}); 
또한

Working example

당신은 내 키 누르기 이벤트에서 실행 할 수있는 기능을 넣어 코드를 단순화 할 수 있습니다 개체, 다음과 같이 자신의 키 코드 값으로 키가 :

var gracz = { 
    speedY: 0, 
    speedX: 0, 
    keydown: { 
     '37': function() { gracz.speedX -= 1; }, // left 
     '38': function() { gracz.speedY -= 1; }, // up 
     '39': function() { gracz.speedX += 1; }, // right 
     '40': function() { gracz.speedY += 1; }, // down 
     '32': function() { console.log('SPACE'); } // space 
    } 
}; 

$(window).keydown(function(e) { 
    gracz.keydown[e.which](); 
    console.log(gracz); 
}); 

Working example

관련 문제