在我为我的OpenGL程序while循环我有一些像这样读一的KeyDown只有一次:在while循环(像的KeyListener在Swing)
if (Keyboard.isKeyDown(Keyboard.KEY_W)) {
...
}
当然现在这个如果得到确认多个每次倍按钮按下。
有没有办法让它每按一次只检测一次按钮?
例如像Java Swing中的KeyListener一样。
我已经使用elapsedTime
变量处理移动速度,也许我可以用它来解决这个问题呢?
设置一个标志,当你第一次检测到按键,它们虽然如此,忽略了其他任何按键相同的类型,直到你发现钥匙释放... – MadProgrammer 2014-09-10 21:25:36
嗯,这听起来像一个计划。 但是,如果我只想让if-code每次按下只执行一次,我该如何检查?因为while循环仍然继续,并且每秒运行60次,所以无论使用什么布尔值,在按下键时都会如此,从而执行代码。如果我将使用一段时间,它会阻止当时运行的其他代码。或者我错过了什么? – 2014-09-10 21:48:09
您需要在呼叫之间保留一个标记以检查状态。如果您检测到该标志为真并且该键处于关闭状态,则可以忽略该标志,否则如果该标志为真且该键未关闭,则需要重置该标志。你只想运行逻辑,当标志是假的,关键是关闭 – MadProgrammer 2014-09-10 22:32:17