在while循环中只读取一次KeyDown(与Swing中的KeyListener一样)

时间:2014-09-10 21:12:49

标签: java input lwjgl

在我的OpenGL程序的while循环中,我有类似的东西:

     if (Keyboard.isKeyDown(Keyboard.KEY_W)) {
     ...
     }

现在当然按下按钮会多次检查这个 有没有办法让它每按一次只检测一次按钮?
例如,像Java Swing中的KeyListener一样。

我已经用elapsedTime变量处理移动速度,也许我也可以用它来解决这个问题?

2 个答案:

答案 0 :(得分:1)

跟踪它第一次出现的时间以及何时重新出现,理想情况下,此布尔值未在方法的本地范围内定义,该方法每秒调用60次,但范围更高。

if (wKeyUp && Keyboard.isKeyDown(Keyboard.KEY_W)) {
    wKeyUp = false;
    onNewWKeyPress();
}
else if (wKeyUp == false)
{
    wKeyUp = true;
}

答案 1 :(得分:0)

按照MadProgrammers的指示评论我的问题,我得到了这个工作:

 if (Keyboard.isKeyDown(Keyboard.KEY_W)) {
    if(wKeyUp==true) {
      wKeyUp = false;

      executeCode();
      }
   } else if (wKeyUp == false && !Keyboard.isKeyDown(Keyboard.KEY_W))
        wKeyUp = true;