私の現在のLWJGLアプリケーションでは、GLFWKeyCallbackを拡張するKeyboard.javaという名前のハンドルを扱うクラスを設定したGLFWウィンドウ入力ハンドラを使用しています。私はキーボード入力クラスを正しく設定しましたが、十分速く(非常に速く)クリックしないとキーをクリックすると、複数のクリックとして登録されます。複数のクリックとしてGLFWキーボード入力レジスタ
Keyboardクラス
public class Keyboard extends GLFWKeyCallback {
//Variables
public static boolean keys[] = new boolean[65536];
@Override
public void invoke(long window, int key, int scancode, int action, int mods) {
keys[key] = action == GLFW_PRESS;
}
}
実装
public static void handleInput() {
if (Keyboard.keys[GLFW_KEY_SPACE]) {
System.out.println("Space");
glfwPollEvents();
}
}
上記の方法はゲームのメインループで実装され、フレームに一度と呼ばれる:私は以下のいくつかのドキュメントを提示しています。
結果
初期化LWJGLのバージョン:3.1.2ビルド29
スペース
スペース
スペース
スペース
上記:「Sペース "は、私がスペースをクリックするたびに出力する必要がありますが、私はそれを比較的速くクリックすると、多くの"スペース "の上記の結果が得られます。
結論:スペースをクリックしても、どれだけ長く保持していても、スペースを1回だけ登録することは可能ですか?ありがとう
回答ありがとうございましたが、私はすでにこれを修正することができました。しかし、これははるかに簡単なアプローチです。ありがとうございました。 –