2012-12-21 23 views
0

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"); 
      } 
     } 
    } 
+1

你不應該使用'System.out.println()'? – Doorknob

+0

這並不重要。它只是打印文本紅色,所以我可以在所有其他打印輸出中看到它。即使我改變它,它也沒有區別 – CoderTheTyler

回答

1

每API:

公共靜態INT getEventKey()

請注意,返回鍵代碼是不是針對當前的鍵盤佈局有效。要獲得實際的字符按下通話getEventCharacter

返回:從當前事件的關鍵

試着改變你的第一if語句中使用getEventCharacter menthod爲:

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

我發現了這個問題,但是謝謝你的建議! – CoderTheTyler

0

這是我做的在我的程序中...我爲角色製作布爾值,然後在遊戲循環中運行一個方法來檢查它:

public static boolean keyboardA; 

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

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

如果你需要我解釋更多隻是評論:P 希望它有幫助