Как расставить приоритеты при обработке событий (LIBGDX) - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть Экран:

WorldScreen implements Screen, InputProcessor{

    ....
    stageGui.addActor(storyActor);
    ....

    @Override
    public boolean touchUp(int screenX, int screenY, int pointer, int button) {
    }

}

, и у меня есть Актер:

public class StoryActor extends Group {
private InputListener listener = new InputListener() {
        @Override
        public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
            event.handle();
        }
}
}

При нажатии на актера, сначала обрабатывается касание с WorldScreen.Затем обрабатывается touchUp от StoryActor.

Как мне добиться, чтобы сначала были обработаны актеры?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вместо реализации InputProcessor в вашем WorldScreen.Создайте новый класс для InputProcessor, например: WorldScreenInputProcessor implements InputProcessor

После этого вы можете использовать InputMultiplexer для обработки нескольких InputProcessor:

InputMultiplexer multiplexer = new InputMultiplexer();

//What you add first has higher priority
multiplexer.addProcessor(stageGui); //Input of your Actor
multiplexer.addProcessor(new WorldScreenInputProcessor());

Gdx.input.setInputProcessor(multiplexer);
0 голосов
/ 15 февраля 2019

Посмотрите на https://github.com/libgdx/libgdx/wiki/Event-handling#inputmultiplexer, как использовать входные мультиплексоры, это должно решить вашу проблему.

...