当前位置: 首页 > 面试题库 >

libgdx实现InputProcessor的多个对象

宋伟泽
2023-03-14
问题内容

因此,在我身上,我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



 类似资料:
  • 我有一个InputHandler类,它实现了libGDX InputProcessor。它用于处理箭头键和空格键事件。 我的问题是,如果按下向上箭头、向左箭头和空格键中的所有三个键,最后一个键不会触发事件。但是,向右和向下箭头键的功能很好。 左箭头+空格键:setLeftPressed和setSpacePressed都被触发。 左箭头+上箭头+空格键:未触发setSpacePressed。 右箭头

  • 我有3个不同的游戏levels.So会有三个不同的高分需要在谷歌游戏服务上发布排行榜。我不明白这个。我所做的是我创建了一个方法 对于submitcore(),我只是在游戏中的每个级别调用此方法,并从那里发送高分。 但是当我调用getLeaderboardGPGS()时,它只显示最后一级的高分。 所以我不知道如何实现这个多重排行榜。

  • 本文向大家介绍js 将多个对象合并成一个对象 assign方法的实现,包括了js 将多个对象合并成一个对象 assign方法的实现的使用技巧和注意事项,需要的朋友参考一下 1.接下来介绍一下ES6在Object新加的方法  assign()   1.作用:将多个对象{}  合并成一个独立对象。  2.使用方式: Object.assign(合并的对象,传入合并中的对象....) 2.首先es6新增

  • 我想要两个SpriteBatch对象,一个用于实际的sprites,另一个用于HUD。我不知道如何让一个SpriteBatch保持相对屏幕的位置,但让另一个SpriteBatch以玩家的身体为中心移动。我有一个用于box2d身体的正交摄像头和一个用于精灵的正交摄像头。 我以为setProjingMatrix方法可以解决这个问题,但我可能用错了。 这给了我停留在左下角的“你好”,一个停留在中心并旋转

  • 问题内容: 我正在努力在程序中实现一个对话框。主程序不使用阶段。但是,当用户的生存时间为0时,我想弹出一个对话框,以重新启动游戏或退出游戏。 我使用以下代码为对话框创建了一个单独的类。 游戏主屏幕不使用舞台。在更新方法中,如果肝脏为0,则创建GameOver类 在render方法中,我绘制了舞台 第一次创建对话框时,这可以完美地工作。当点击重新启动时,游戏将重新启动(或实际上重置比分并生效)。但是

  • 我想对播放器的实现对象提出一些建议。播放器可以有2个纹理,根据按下的按钮选择,例如,右箭头将在左侧显示一个纹理,而另一个纹理。 我已经在播放器类中实现了接口输入处理器,但我不知道为什么它看起来不是很公平和非常动态,所以我想从你那里得到一些建议 谢谢 代码: 我以这种方式实现了玩家类,但我想要一些最佳实现的建议。