我不明白 InputProcessor
应该如何工作。
我有一个游戏的多个屏幕
。我创建了一个 MyInputProcessor
class
来实现
InputProcessor。在我的 MenuState 类
中,我将 Gdx.input.setInputProcessor
设置为该类的一个实例。
首先,我应该如何在
MyInputProcessor
中访问和设置在我的MainMenu 类
中定义的变量?例如,如果我想要touchDown
方法更改变量。如果我切换
Screens
,是否必须创建一个新的InputProcessor 类
来检查其他触摸事件?我显然不希望它继续检查用于MainMenu 类
的内容。我该如何使用它?我是否应该为每个
Screen
创建一个全新的InputProcessor
?
我觉得这一切都很困惑。感谢所有帮助。
最佳答案
是的,通常你创建一个InputProcessor
对于每个 Screen
,甚至对每个需要处理输入的对象来说更好。这个对象可以是 Screen
, 但它可以是 Player
到。
因此,每个需要通知任何输入的对象都应该实现 InputProcessor
并处理相关输入。
还要确保设置您的 InputProcessor
作为当前 Activity 的(使用 Gdx.input.setInputProcessor
)。
Screen
例如可以将自己设置为当前 InputProcessor
在show
方法(并最终在 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/