2011-01-20 9 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は、第二またはミリ秒に右であるが、私はそれは文字が押されていない今までまでのために実行したいキーコードを見つけるために、 :move関数は、endと呼ばれるグローバル変数を設定します。これは、ループを止めると1になります)maxこのループは実行可能です。say(固定値は既にわかっています) – aWebDeveloper

+0

@Web申し訳ありません。 "キャラクターが**押されていない**まで?"言い換えれば、**ユーザーがキーを押している間**、あなたは何かが欲しいですか? – deceze

+0

ループを非停止状態で実行していますが、ユーザがチャプタを押した場合、ループを実行しなくてもいいようにします – 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

奇妙なことに、それをテストすると、ブレークポイントは2番目に1秒ごとにヒットしました。 *うずまき* –

関連する問題