如何确定事件处理的优先级 (LIBGDX)

How to priorize eventhandling (LIBGDX)

我有一个屏幕:

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 的触摸。然后处理来自 StoryActor 的 touchUp。

我怎样才能首先处理演员?

看看 https://github.com/libgdx/libgdx/wiki/Event-handling#inputmultiplexer 如何使用输入多路复用器应该可以解决您的问题。

而不是在您的 WorldScreen 中实现 InputProcessor。为 InputProcessor 创建一个新的 class 例如: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);