问题描述
您需要使用InputMultiplexer
将事件转发给双方InputProcessors
。它看起来像这样:
InputProcessor inputProcessorOne = new CustomInputProcessorOne(); InputProcessor inputProcessorTwo = new CustomInputProcessorTwo(); InputMultiplexer inputMultiplexer = new InputMultiplexer(); inputMultiplexer.addProcessor(inputProcessorOne); inputMultiplexer.addProcessor(inputProcessorTwo); Gdx.input.setInputProcessor(inputMultiplexer);
@H_301_7@多路复用器的工作方式类似于某种开关/集线器。它从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
事件。