【问题标题】:How to handle input for an on-screen gui (for pause button) in Android?如何处理 Android 中屏幕 gui(暂停按钮)的输入?
【发布时间】:2013-03-04 15:05:48
【问题描述】:

我正在开发使用 libgdx 制作的游戏,需要在我的游戏屏幕上方添加一些 GUI。类似于 Android 中的 FrameLayout

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

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

【问题讨论】:

    标签: libgdx


    【解决方案1】:

    您应该能够使用Stage 来管理您的用户界面。要使输入正常工作,您需要添加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 方法。这可能不是您的正确选择,但它是一个可行的选择。

    【讨论】:

    • 好吧,我虽然是这样......我已经检查了 InputMultiplexer 文档......你的答案是有道理的。我会尝试这种方法....希望它会奏效。很多! :) 我熟悉在 Android 中处理输入,我希望它的工作方式类似:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    相关资源
    最近更新 更多