Событие OnKeyReleased не вызывается, но OnKeyPressed находится в полноэкранном режиме. - PullRequest
0 голосов
/ 08 ноября 2019

Я делаю игру с javafx и пытаюсь реализовать проверку ввода. Он устанавливает свойства сцены onKeyPressed и onKeyReleased, но проблема в том, что вызываются только события onKeyPressed.

Я пытался использовать requestFocus () на корневой панели, я пытался использовать объекты EventHandler вместоЛямбда, я попытался поместить setOnKeyReleased в нескольких местах, и я попытался изменить узел, на который я положил OnKeyReleased. Я посмотрел и не нашел никого, кто имел бы ту же проблему, только разные проблемы с похожими симптомами.

РЕДАКТИРОВАТЬ: Это не работает, только когда сцена в полноэкранном режиме. Я вытащил его из полноэкранного режима случайно, только чтобы убедиться, что он вдруг работает. Почему полноэкранный режим предотвращает вызов событий onKeyReleased? Как мне обойти это?

Класс ввода:

public final class Input {

    private static ArrayList<String> pressed = new ArrayList<>(KeyCode.values().length);

    public static boolean isKeyDown(KeyCode key) {
        return pressed.contains(key.getName());
    }

    public static void init() {
        Main.getScene().setOnKeyPressed(event -> {
            String code = event.getCode().getName();
            System.out.println("key pressed: "+code); //prints
            if (!pressed.contains(code)) pressed.add(code);
            event.consume();
        });
        Main.getScene().setOnKeyReleased(event -> {
            String code = event.getCode().getName();
            System.out.println("key released: "+code); //does not print, in fact none of the code in this block ever runs
            pressed.remove(code);
            event.consume();
        });
    }

}

Input.init () вызывается после того, как вы закончили выбирать своего персонажа и новая корневая панель была полностью настроена.

Нет сообщений об ошибках или чего-то еще, и я попытался поместить println () в местах внутри и вокруг setOnKeyReleased, и все вокруг него работает нормально, но когда полноэкранный режим ничего внутри лямбды onKeyReleased не запускается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...