java - libGDX - 对不同的屏幕使用不同的 InputProcessors?

标签 java android libgdx

我不明白 InputProcessor 应该如何工作。

我有一个游戏的多个屏幕。我创建了一个 MyInputProcessor class实现 InputProcessor。在我的 MenuState 类 中,我将 Gdx.input.setInputProcessor 设置为该类的一个实例。

  1. 首先,我应该如何在 MyInputProcessor 中访问和设置在我的 MainMenu 类 中定义的变量?例如,如果我想要 touchDown 方法更改变量。

  2. 如果我切换 Screens,是否必须创建一个新的 InputProcessor 类 来检查其他触摸事件?我显然不希望它继续检查用于 MainMenu 类 的内容。我该如何使用它?

  3. 我是否应该为每个 Screen 创建一个全新的 InputProcessor

我觉得这一切都很困惑。感谢所有帮助。

最佳答案

是的,通常你创建一个InputProcessor对于每个 Screen ,甚至对每个需要处理输入的对象来说更好。这个对象可以是 Screen , 但它可以是 Player到。
因此,每个需要通知任何输入的对象都应该实现 InputProcessor并处理相关输入。
还要确保设置您的 InputProcessor作为当前 Activity 的(使用 Gdx.input.setInputProcessor )。
Screen例如可以将自己设置为当前 InputProcessorshow方法(并最终在 hide 中注销自己)。 如果你想使用多个 InputProcessor s 一次(例如在 GameScreen 中,其中 Player 是使用“w,a,s,d”控制的,但您想在“Esc”上显示 PauseMenu),只需使用 InputMultiplexer并注册每个 InputProcessor在那个多路复用器上。
如果你使用 InputMultiplexer , 一定要注意你的 InputProcessor 的返回值-方法:
- 返回 true ,如果处理器处理了事件(例如在 Player s InputProcessor 中,当按下“w”、“a”、“s”或“d”时)。 - 返回 false ,当您没有处理事件时(例如在 Player s InputProcessor 中,当按下“Esc”时)。
InputMulitplexer将经历所有它的InputProcessor s 并向他们发送事件,直到其中一个返回 true .所有其他人都不会收到有关该事件的通知。
另请注意,Stage是一个 InputProcessor ,它将事件分发给它的 Actor秒。因此,如果您想处理 Actor 中的输入s,确保设置Stage正如你当前InputProcessor .

关于java - libGDX - 对不同的屏幕使用不同的 InputProcessors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007149/

相关文章:

libgdx - 如何在 libgdx 中补间 BitmapFontCache 的 alpha?

java - 无法使用 Skin 更改 TextButton 的字体

java - resultset.next() 循环中的打印语句不打印

Java : How to create map using the class attributes?

java-如何生成6位随机十六进制值

java - 将字符串 ›ÄX%ß=dÜgž=ŒT8ï8L]4C®° 插入 sql 显示错误

android - 我应该如何处理我的应用程序的结构(ListView 开始)?

Android:查找两个地理点之间的距离

android - 带有 Appcompat 的 float 工具栏

java - libgdx - 在其他线程中做某事不起作用