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 constructorlongPressDuration 参数)完成的。例如,

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?)中并计算 deltakeyDownTime 和当前时间之间。
如果计算出的 delta 更大,则增量需要为 "long press",则 key-evnet 为长按,否则为短按。
如果您的 InputProcessor 应该能够检测多个键的长按和短按,那么您可以存储一个 IntMap<int, long>,其中 int keykeyCodelong valuekeyDownTime.
使用keyDown中的keyCodeput中的keyDownTimekeyUp中的get中的keyDownTime,然后计算delta 你知道,是否是长按。