Получить ключ ввода без задержки - PullRequest
0 голосов
/ 02 января 2019

Я пишу ввод для Java-игры, используя LWJGL3, но у меня есть проблема с вводом, когда я нажимаю клавишу, ее нужно удерживать в течение доли секунды, прежде чем она будет поднята.Как сделать так, чтобы он видел ввод, как только он нажал?

public class InputManager extends GLFWKeyCallback {

    private long window;
    public static boolean[] keys = new boolean[65536];

    public InputManager(long window){
        this.window = window;
    }

    public void setWindow(long window){
        window = window;
    }

    @Override
    public void invoke(long window, int key, int scancode, int action, int mods) {
        keys[key] = action != GLFW_RELEASE;
    }
}

public class DisplayManager {
    private static GLFWErrorCallback errorCallback;
    private static GLFWKeyCallback keyCallback;

    public static void createDisplay() {
        inputManager = new InputManager(window);
        GLFW.glfwSetKeyCallback(window, keyCallback = inputManager);
    }

    public static void updateDisplay() {
    GLFW.glfwPollEvents();

    if (inputManager.keys[GLFW_KEY_SPACE]){
        System.out.println("Spacebar pressed.");
    }
    }
}

1 Ответ

0 голосов
/ 02 января 2019

Вы читаете ключи ТОЛЬКО на дисплее обновлений.Обновление дисплея вызывается действительно всего несколько раз за секунду.В API вы можете видеть, как вы переопределяете инициируемое событие из другого метода и сохраняете ключ для доступа к нему позже в updatedisplay ().

...