libgdx: почему мой InputAdapter не получает событие keyUp? - PullRequest
1 голос
/ 13 марта 2020

Я воссоздаю Pokemon Game с помощью libgdx, и у меня есть InputAdapter, который контролирует движение игрока, и он отлично работает. Затем у меня есть этот другой InputAdapter для управления OptionBox, который я создал, где показаны параметры. (Например, это параметры Boy / Girl в Pokemon), но это не работает вообще. Я добавил System.out.println внутри метода keyUp, чтобы проверить, появляется ли он, но это не так. Кто-нибудь знает почему?

public class OptionBoxController extends InputAdapter {

    private OptionBox optionBox;

    public OptionBoxController(OptionBox optionBox) {
        this.optionBox = optionBox;
    }

    @Override
    public boolean keyUp(int keycode) {
        if (keycode == Keys.UP) {
            optionBox.moveUp();
        } else if (keycode == Keys.DOWN) {
            optionBox.moveDown();
        }
        return false;
    }

}

Я реализую оба адаптера ввода на моем экране следующим образом:

multiplexer = new InputMultiplexer();

playerController = new PlayerController(player);
optionBoxController = new OptionBoxController(optionBox);
multiplexer.addProcessor(0, playerController);
multiplexer.addProcessor(1, optionBoxController);

1 Ответ

1 голос
/ 13 марта 2020

Я действительно глуп, я только что обнаружил, почему это не сработало, потому что в моем методе show() в моем классе Screen у меня было Gdx.input.setInputProcessor(playerController); вместо Gdx.input.setInputProcessor(multiplexer);, так что на самом деле работал только мой playerController. Я оставлю этот пост здесь на случай, если у кого-то возникнет такая же проблема.

...