2017-01-15 6 views
0

私はKeyListenerを使用したJava 2D Gameを開発していますが、おそらく推測できるように、主にPlayerが動作しているときに同じキーを長押し例えば ​​"W"を押して前進させますが、Wを押し続けるとKeyListenerが死んでキーが動かず、KeyBindingsを使いたいと思っています。ほとんどの人がゲーム開発のために提案していますが、役に立つチュートリアルはありませんそれらのほとんどは何らかのボタンやその他の無駄な機能を使っているので、KeyListenerがフォーカスを失うのを避けるにはどうすればよいのですか、単純なKeyBindingコードを書く方法、ゲームで。KeyBindingsの書き方

これは私がしたいことをキーバインディングの一種である、私はITが動作しない知っているが、これは一例です:

component.getInputMap().put(KeyStroke.getKeyStroke(VK_W), 
         "move forward") 
component.getActionMap().put("released", 
         releasedAction); 
if(releasedAction == true){ 
Player.playerSpeedY = 7; 
} else{ 
Player.playerSpeedY = 0; 
} 

FWI:これは現在のKeyListenerコードです:

if(HUD.PlayerHealth > 0){ 
     if(key == KeyEvent.VK_W) {Player.playerSpeedY = -5; keyDown[0]= true;} 
     if(key == KeyEvent.VK_S) {Player.playerSpeedY = 5; keyDown [1]= true;} 
     if(key == KeyEvent.VK_A) {Player.playerSpeedX = -5; keyDown [2]= true;} 
     if(key == KeyEvent.VK_D) {Player.playerSpeedX = 5; keyDown [3]= true;} 
    } 

私はアクションと入力マップのチュートリアル、またはキーバインドのものを探し続けています。有用なもの、別の生地、アクションと入力マップのコンポーネント、それは何ですか?私のコード全体に基づいていれば、アクションマップだけでプレイヤーを移動させる方法はありますか?

答えて

0

このような何か試してみてください:

this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_D, 0, false), "right"); 
    this.getActionMap().put("right", new AbstractAction() { 
    public void actionPerformed(ActionEvent e) { 

     //Do Something Here 
    Player.playerSpeedX = 5; 

    } 
    }); 

How to use KeyBindings

関連する問題