libgdx实现InputProcessor的多个对象

所以在我的Screen我有两个相同类的对象,它们使用以下keyDown() method实现InputProcessor:

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

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

您需要使用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

以下是LibGDX.info上的代码示例,展示了如何使用LibGDX实现多路复用:

https://libgdx.info/multiplexing/

我希望它有所帮助