2013-12-14 58 views
1

我試圖按鍵綁定ad按鍵以使角色左右移動,但只有在按下按鍵時纔會執行一次操作。我如何修改此代碼,以便在ad被禁止的情況下進行活動?檢測在java中按下的按鍵7

p.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_W, 0),"up"); 
p.getActionMap().put("up", new UpAction()); 
p.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_A, 0), "left"); 
p.getActionMap().put("left", new LeftAction()); 
p.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_D, 0), "right"); 
p.getActionMap().put("right", new RightAction()); 
p.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),"quit"); 
p.getActionMap().put("quit", new StopAction()); 
+0

[Java-check if control key is being pressed](http://stackoverflow.com/questions/11659801/java-check-if-control-key-is-being-pressed) – djechlin

回答

6

偵聽兩個單獨的事件,一個是按下鍵,另一個是釋放它的地方。

按下鍵應該設置一個標誌,釋放它清除所述標誌。然後你可以檢查標誌的值,而不是連續試圖糾纏鍵盤。 當您查看的不僅僅是一個鍵時,您希望將當前按下的所有KeyStrokes存儲在地圖中。

+2

+1 for將當前按下的KeyStrokes(不是鍵碼)存儲在Map中。有關完整的工作示例,請查看[Motion Using the Keyboard]中的KeyboardAnaimation.java示例(http://tips4java.wordpress.com/2013/06/09/motion-using-the-keyboard/)。 – camickr

+0

注意到,感謝您的更正。 – Josiah