libgdx实现InputProcessor的多个对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了libgdx实现InputProcessor的多个对象相关的知识,希望对你有一定的参考价值。

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

@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/

我希望它有所帮助

以上是关于libgdx实现InputProcessor的多个对象的主要内容,如果未能解决你的问题,请参考以下文章

9.2.2Libgdx的输入处理之事件处理

LibGDX从使用变换投影矩阵绘制的TextureRegion获取坐标?

LibGdx 与 Android Studio 有多个错误

具有多个小部件的 LibGDX 和 ScrollPane

java 和 libGDX / LWJGL 游戏全屏尺寸错误,适用于 Ubuntu 上的多个显示器

LibGDX:如何实现 Google Play 游戏服务? [关闭]