如何处理输入的屏幕上的gui(暂停按钮)在Android



我正在用libgdx制作游戏,需要一些GUI在我的游戏屏幕上。就像Android中的FrameLayout

我有GameScreen,一切都在发生。我现在想要的是添加一个"暂停"按钮,高分信息等。

我尝试将Stage对象与常规精灵绘图结合起来。但是我在处理输入时遇到了一些问题:如果用户在舞台上点击暂停按钮,或者点击游戏区域(我应该添加一些子弹),如何管理……

您应该能够使用Stage来管理您的UI。为了使输入正常工作,您需要添加一个InputMultiplexer这样Stage和当前的输入方案都将获得输入。

要设置它,你需要这样做:

InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(stage);
multiplexer.addProcessor(gameScreenInputProcessor);
Gdx.input.setInputProcessor(multiplexer);

(基于https://code.google.com/p/libgdx/wiki/InputEvent代码的代码示例)

注意顺序很重要(我猜你会希望舞台首先获得事件以查看UI是否被触摸)。此外,输入事件处理程序的布尔返回值对于多路复用器更重要,因为"处理过的"事件不会由多路复用器传播。Stage中的UI事件有自己的"已处理"标志(大多数情况下它做正确的事情,但也有一些微妙的差异)。

InputMultiplexer的一个替代方案是创建一个"GameScreenActor"(Actor的一个新子类),它包含您插入到全局Stage的当前游戏屏幕。但是,您必须将输入处理移动到scene2d方法。这可能不是正确的选择,但这是一个可行的选择。

最新更新