2013-07-14 8 views
6

マウスを押したときではなく、マウスをクリックしたときに取得しようとしています。 私はループでコードを使用していることを意味し、マウスが押されたかどうかを検出した場合、コードは多くの時間を実行しますが、マウスがちょうどクリックされたときにコードを1回だけ実行します。Libgdx Mouseがちょうどクリックされました

これは私のコードです:

if (Gdx.input.isButtonPressed(Input.Buttons.LEFT)){ 

      //Some stuff 
} 

答えて

9

http://code.google.com/p/libgdx/wiki/InputEventを参照してください - あなたはInputProcessorを拡張し、Gdx.input.setInputProcessor(にカスタム入力プロセッサを渡すことで、代わりにポーリングの入力イベントを処理する必要があります)。

EDIT:

public class MyInputProcessor implements InputProcessor { 
    @Override 
    public boolean touchDown (int x, int y, int pointer, int button) { 
     if (button == Input.Buttons.LEFT) { 
      // Some stuff 
      return true;  
     } 
     return false; 
    } 
} 

そして、あなたはそれを使用したい任意の場所:

MyInputProcessor inputProcessor = new MyInputProcessor(); 
Gdx.input.setInputProcessor(inputProcessor); 

それが簡単にこのパターンを使用することを見つけた場合:

class AwesomeGameClass { 
    public void init() { 
     Gdx.input.setInputProcessor(new InputProcessor() { 
      @Override 
      public boolean TouchDown(int x, int y, int pointer, int button) { 
       if (button == Input.Buttons.LEFT) { 
        onMouseDown(); 
        return true; 
       } 
       return false 
      } 

      ... the other implementations for InputProcessor go here, if you're using Eclipse or Intellij they'll add them in automatically ... 
     }); 
    } 

    private void onMouseDown() { 
    } 
} 
+0

あなたは私に私が使うべき機能についての詳細を与えることができますか? InputEventでは、必要な機能がどこにあるのか分かりません。 – LeSam

+0

マウスがちょうどクリックされたことを確認する必要があります。つまり、マウスを長押ししても、マウスがちょうどクリックされたときにコードが1回実行されます。 – LeSam

+0

はい、InputProcessorがこれを行います。すぐに詳細を提供するために答えを編集する。 –

11

あなたはGdx.input.justTouched()を使用することができ、そのマウスがクリックされた最初のフレームではtrueです。それとも、他の回答の状態、あなたがInputProcessor(またはInputAdapter)を使用してtouchDownイベントを処理することができますよう:

Gdx.input.setInputProcessor(new InputAdapter() { 
    public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
     if (button == Buttons.LEFT) { 
      // do something 
     } 
    } 
}); 
関連する問題