libgdx实现InputProcessor的多个对象

问题描述

您需要使用InputMultiplexer将事件转发给双方InputProcessors。它看起来像这样:

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

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

解决方法

因此,在我身上,我Screen有两个InputProcessor使用以下keyDown()方法实现的相同类的对象:

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

问题是当我实例化这两个对象时,只有最后一个实例化会接收任何keyDown事件。我需要两个对象(或者有很多对象)来接收keyDown事件。

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”