0

LWJGL 似乎在骚扰我(或者我又是个笨蛋)。我正在使用以下代码:

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

当我按下并释放“Q”时,它既不会打印出“Pressed”也不会打印出“Released”。帮助?

编辑:问题解决了。在使用 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");
            }
        }
    }
4

2 回答 2

1

每个 API:

公共静态 int getEventKey()

请注意,返回的键码对当前键盘布局无效。要获取实际按下的字符,请调用 getEventCharacter

返回:当前事件的键

尝试更改您的第一条if语句以使用getEventCharactermenthod 作为:

   if(Keyboard.getEventCharacter() == Keyboard.KEY_Q) {
于 2012-12-21T22:28:13.587 回答
0

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

public static boolean keyboardA;

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

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

如果您需要我解释更多,请发表评论:P 希望对您有所帮助

于 2012-12-30T20:13:02.420 回答