2015-06-07 30 views
0

有没有办法处理keydown只是一个点击而不是一个长按libgdx keydown?它与手势检测器有什么关系? 澄清,我的问题是有关键盘事件,不要触摸和鼠标事件libgdx keyDown区分长按和短按

+0

那么,你需要定义什么是“长按”?它是第二个吗?甚至更长?区分它们的一种可能的方法是将键盘上的当前时间存储下来,并在keyUp方法中计算一个增量。如果这个增量大于那个“长按”所需的增量,它就是一个长按。相反,手势检测是关于触摸屏上的输入,就我所知。它被用来检测f.e.幻灯片等 – Springrbua

+0

这非常有道理,谢谢! –

回答

0

GestureDetector仅用于触摸和鼠标事件。
要区分短按键和长按键,您可以实现您自己的InputProcessor,它将当前时间存储在keyDown方法中的变量(keyDownTime?)中,并计算keyDownTime与当前时间之间的delta
如果计算得出的delta比较大,那么这个三角洲需要是一个“长按”,那么关键词evnet是一个长按,否则就是短按。
如果您的InputProcessor应该能够检测多个按键的长按和短按,则可以存储IntMap<int, long>,其中int keykeyCodelong valuekeyDownTime
使用keyCodekeyDownputkeyDownTime并在keyUpgetkeyDownTime,然后计算delta,你知道,如果它是一个长按或不。

0

是的,有一种方法,是的,它是通过Gesture-detector完成。在constructor(参数longPressDuration)中创建对象时,可以将您定义的内容设置为“长按”。例如,

Gdx.input.setInputProcessor(new GestureDetector(20, 0.4f, 1.1f, 0.15f, new MyGestureListener())); 

将设置一个新GestureDetector作为输入处理器与“长按”大于1.1秒(第三个参数)定义为任何按更长。在MyGestureListener内部,您将通过覆盖longPress方法来定义在发生长按事件时要发生的情况。

+0

但这不是关于touchInput的吗?用户改为想要检测长按键。 'GestureDetector'是否有一些方法可以实现? – Springrbua

+0

@Springrbua你是正确的,'GestureDetector'用于触摸/鼠标事件。我以为OP询问了鼠标输入,因为他使用了“单击”这个词,这听起来像是鼠标事件。 – asherbar

+0

我的意思是键盘事件,而不是触摸和鼠标事件,对于混淆抱歉。 –