LWJGL关键事件状态不起作用

时间:2012-12-21 22:08:47

标签: java keyboard lwjgl

LWJGL似乎在惹恼我(或者我再次成为笨蛋)。我使用以下代码:

if(Keyboard.getEventKey() == Keyboard.KEY_Q) {
    if (Keyboard.getEventKeyState()) {
        System.err.println("Pressed");
    }else {
        System.err.println("Released");
    }
}

当我按下并发布' Q'时,它既不打印"按下"也没有"发布"。帮助

编辑:问题解决了。首先必须在使用getEventKey()之前轮询键盘缓冲区。固定代码是:

while(Keyboard.next()) {
        if(Keyboard.getEventKey() == Keyboard.KEY_Q) {
            System.out.println("HI");
            if (Keyboard.getEventKeyState()) {
                System.out.println("Pressed");
            }else {
                System.out.println("Released");
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

每个API:

  

public static int getEventKey()

     

请注意,返回的密钥代码对当前键盘布局无效。要获得实际字符,请调用getEventCharacter

     

返回:当前事件的键

尝试更改您的第一个if语句,以使用getEventCharacter menthod作为:

   if(Keyboard.getEventCharacter() == Keyboard.KEY_Q) {

答案 1 :(得分:0)

这就是我在程序中所做的...我为角色制作了一个布尔值,然后在游戏循环中运行一个方法来检查它:

public static boolean keyboardA;

public static void refresh() {
keyboardA = Keyboard.isKeyDown(Keyboard.KEY_A);
}

public static void game_loop() {
refresh();
}

如果你需要我解释更多的评论:P 希望它有所帮助