2011-10-26 8 views
1

私は、キャンバス要素とJavascriptを使用して私の大学プロジェクト用のプラットフォームゲームを作成しています。私はうまくいっていますが、私の選手のアップデートループで特定のキーが押されているかどうかを確認する方法についていません。JavaScriptがキーが押されているかどうかを調べる

私はこのように考えていた:

if(d) { 
    // move player right 
} else if(a) { 
    // move player left 
} else if(w) { 
    // move player up 
} else if(s) { 
    // move player down 
} 

明らかに、psudocodeだこと。 Javascriptでキーを押すための唯一のリソースはイベントです。特定のポイントでキーが押されているかどうかはわかりません。

誰もがこれにいくつかの光を当てることができますか?

+0

「onkeypress」、「onkeydown」、「onkeyup」。 –

+0

https://developer.mozilla.org/en/DOM/element.onkeypress –

+0

あなたはどちらも私を理解していないので、キーを押したときに起動するメソッドは必要ありません。私はそれで動作することができますが、それはハッキーと恐ろしいだろう。特定のコードが実行されたときにキーが押されたかどうかを確認する方法が必要です。 –

答えて

4

キーがアップまたはダウンの場合、4つのブール変数が設定されます。 keydownでtrueに設定し、keyupでfalseに設定します。 (key_d == true){//キーdが押されているとすれば可能です}

それを行う最良の方法です。その "ハッキー"ではなく、キーの押下を処理するイベントリスナを追加します。

+0

これは考えていませんでした。ありがとう、これはそれを行うための最善の方法と思われる。 :) –

1

どのキーが押されたかを判断するのに、​​、keyup、またはkeypressを使用することはできません。ただし、これらのイベントハンドラの1つでこのコードを実行する代わりに、それらの中にいくつかのグローバルフラグを設定および解除することができます。その後、このコードが実行されると(私はそれがある種の間隔にあると仮定していますか?)、フラグをチェックできます。

0

イベントリスナーが必要です。

//function foo, returns keypress 
function foo(e){ 
var evt=(e)?e:(window.event)?window.event:null; 
if(evt){ 
    var key=(evt.charCode)?evt.charCode: 
     ((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0)); 
    return key; 
} 

//set event listener 
//you could also attach this to your canvas, but that will require tricks 
//to make the canvas focusable 
document.addEventListener('keydown', foo); 
関連する問題