マウスを押したときではなく、マウスをクリックしたときに取得しようとしています。 私はループでコードを使用していることを意味し、マウスが押されたかどうかを検出した場合、コードは多くの時間を実行しますが、マウスがちょうどクリックされたときにコードを1回だけ実行します。Libgdx Mouseがちょうどクリックされました
これは私のコードです:
if (Gdx.input.isButtonPressed(Input.Buttons.LEFT)){
//Some stuff
}
マウスを押したときではなく、マウスをクリックしたときに取得しようとしています。 私はループでコードを使用していることを意味し、マウスが押されたかどうかを検出した場合、コードは多くの時間を実行しますが、マウスがちょうどクリックされたときにコードを1回だけ実行します。Libgdx Mouseがちょうどクリックされました
これは私のコードです:
if (Gdx.input.isButtonPressed(Input.Buttons.LEFT)){
//Some stuff
}
は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() {
}
}
あなたは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
}
}
});
あなたは私に私が使うべき機能についての詳細を与えることができますか? InputEventでは、必要な機能がどこにあるのか分かりません。 – LeSam
マウスがちょうどクリックされたことを確認する必要があります。つまり、マウスを長押ししても、マウスがちょうどクリックされたときにコードが1回実行されます。 – LeSam
はい、InputProcessorがこれを行います。すぐに詳細を提供するために答えを編集する。 –