libgdx keyDown 区分长按和短按
libgdx keyDown distinguishing a long and short press
在 libgdx 中,有没有一种方法可以处理只需单击一次的按键与长按的按键?它与手势检测器有什么关系吗?
澄清一下,我的问题是关于键盘事件,而不是触摸和鼠标事件
是的,有一种方法,是的,它是通过 Gesture-detector. You can set what you define as a "long press" when creating the object in the constructor(longPressDuration
参数)完成的。例如,
Gdx.input.setInputProcessor(new GestureDetector(20, 0.4f, 1.1f, 0.15f, new MyGestureListener()));
将设置一个新的 GestureDetector
作为输入处理器,"long press" 定义为任何超过 1.1 秒的按键(第三个参数)。在 MyGestureListener
中,您将通过覆盖 longPress
方法来定义长按事件发生时要发生的情况。
GestureDetector
仅用于触摸和鼠标事件。
为了区分短按键和长按键,您可以实现自己的 InputProcessor
,它将 currentTime 存储在 keyDown
方法的变量(keyDownTime
?)中并计算 delta
在 keyDownTime
和当前时间之间。
如果计算出的 delta
更大,则增量需要为 "long press",则 key-evnet 为长按,否则为短按。
如果您的 InputProcessor
应该能够检测多个键的长按和短按,那么您可以存储一个 IntMap<int, long>
,其中 int key
是 keyCode
和 long value
是 keyDownTime
.
使用keyDown
中的keyCode
到put
中的keyDownTime
和keyUp
中的get
中的keyDownTime
,然后计算delta
你知道,是否是长按。
在 libgdx 中,有没有一种方法可以处理只需单击一次的按键与长按的按键?它与手势检测器有什么关系吗? 澄清一下,我的问题是关于键盘事件,而不是触摸和鼠标事件
是的,有一种方法,是的,它是通过 Gesture-detector. You can set what you define as a "long press" when creating the object in the constructor(longPressDuration
参数)完成的。例如,
Gdx.input.setInputProcessor(new GestureDetector(20, 0.4f, 1.1f, 0.15f, new MyGestureListener()));
将设置一个新的 GestureDetector
作为输入处理器,"long press" 定义为任何超过 1.1 秒的按键(第三个参数)。在 MyGestureListener
中,您将通过覆盖 longPress
方法来定义长按事件发生时要发生的情况。
GestureDetector
仅用于触摸和鼠标事件。
为了区分短按键和长按键,您可以实现自己的 InputProcessor
,它将 currentTime 存储在 keyDown
方法的变量(keyDownTime
?)中并计算 delta
在 keyDownTime
和当前时间之间。
如果计算出的 delta
更大,则增量需要为 "long press",则 key-evnet 为长按,否则为短按。
如果您的 InputProcessor
应该能够检测多个键的长按和短按,那么您可以存储一个 IntMap<int, long>
,其中 int key
是 keyCode
和 long value
是 keyDownTime
.
使用keyDown
中的keyCode
到put
中的keyDownTime
和keyUp
中的get
中的keyDownTime
,然后计算delta
你知道,是否是长按。