libgdx 多个对象实现输入处理器

2022-09-03 03:32:37

因此,在我的上,我有两个同一类的对象,它们使用以下方法实现:ScreenInputProcessorkeyDown()

@Override
public boolean keyDown(int keycode) {
    if (keycode==fireKey) {
        System.out.println("Reporting keydown "+keyCode);
    }
    return false;
}

问题是,当我实例化这两个对象时,只有最后一个实例化的对象才会接收任何事件。我需要两个对象(或无论有多少个对象)来接收事件。keyDownkeyDown


答案 1

您需要使用输入多路发送器将事件转发到两者。它看起来像这样:InputProcessors

InputProcessor inputProcessorOne = new CustomInputProcessorOne();
InputProcessor inputProcessorTwo = new CustomInputProcessorTwo();
InputMultiplexer inputMultiplexer = new InputMultiplexer();
inputMultiplexer.addProcessor(inputProcessorOne);
inputMultiplexer.addProcessor(inputProcessorTwo);
Gdx.input.setInputProcessor(inputMultiplexer);

多路复用器的工作方式类似于某种交换机/集线器。它从LibGDX接收事件,然后将它们删除到两个处理器。如果第一个处理器在他的实现中返回,这意味着该事件已被完全处理,并且它将不再转发到第二个处理器。因此,如果您始终希望两个处理器都接收事件,则需要返回 。truefalse


答案 2

下面是一个关于 LibGDX.info 代码示例,演示如何使用 LibGDX 实现多路复用:

https://libgdx.info/multiplexing/

我希望它有帮助


推荐