2011-01-20 7 views
1

키를 누를 때까지 루프/동작을 실행하고 onpress 해당 동작을 중지하고 기능을 호출하려면 getKey을 호출하십시오. 아무도 이것을하는 방법을 제안 할 수 있습니까?키 누르기까지 JavaScript 실행

function getKey(e) 
{ 
    var pressedKey; 
    if (document.all) { e = window.event; } 
    if (document.layers || e.which) { pressedKey = e.which; } 
    pressedCharacter = String.fromCharCode(pressedKey).toLowerCase(); 
    move(pressedCharacter); 

} 

document.onkeypress = getKey; 

키를 누르지 않을 때까지 move() 함수가 계속 실행되기를 원합니다. 그것이 눌려지면 새로운 누르는 문자로 move() 함수를 다시 실행하고 싶습니다.

답변

3

반복하는 방법에 따라 다릅니다. 가장 쉬운 방법은 interval 함께 :

var interval = window.setInterval(function() { 
    // do your thing, do your thing 
}, 1000); 

document.onkeypress = function() { 
    if (/* some specific character was pressed */) { 
     window.clearInterval(interval); 

     // do some other thing, other thing 
    } 
}; 
+0

(1000)는 두 번째 또는 millisec 권리입니다하지만 난이 캐릭터가 누르지 지금까지에 대한 실행하고자하는 키 코드를 찾을 수 : move 함수는 end라는 글로벌 변수를 가지고 있습니다.이 변수는 end를 호출하여 루프를 멈 춥니 다.이 루프가 실행될 수있는 최대 값은 50입니다 (고정 값은 이미 알려짐). – aWebDeveloper

+0

@Web 죄송합니다. "캐릭터가 ** 누르지 않을 때까지 **?" 다른 말로하면, ** 사용자가 키 **를 누르고있는 동안, 당신은 어떤 일이 일어나기를 원합니 까? – deceze

+0

루프가 멈추지 않고 실행되지만 사용자가 charcter를 누른 경우 실행을 멈추고 싶습니다 – aWebDeveloper

1

사용 http://www.asquare.net/javascript/tests/KeyCode.html (PS

<script> 
document.onkeyup = getKey;  

function getKey() { 
    // If the users hits 'a', stop loopcode from running. 
    if(event.keyCode == 65){ 
     window.clearInterval(interval); 
    }; 
} 

var interval = setInterval(function() { 
    // loopcode here 
}, 1000); 

</script> 
+1

'while' 루프는 아마도 브라우저를 응답하지 않게 만들고 아마도 키 누르기를 처리하지 않을 수도 있습니다. – deceze

+0

Ack - 이전 코드의 나머지. –

+0

이상하게도 충분히 테스트 해보면 초마다 브레이크 포인트가 맞았습니다. * 어깨를 으한다. –

관련 문제