我正在尝试键绑定a
和d
键以使角色左右移动,但只有当您按下键时才会执行一次操作。如何修改此代码,以便在a
或d
被按下时执行此操作?
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 :(得分:6)
侦听两个单独的事件,一个是按下键的键,另一个是释放它的位置。
按键应该设置一个标志,释放它清除标志。然后你可以检查标志的值,而不是不断尝试纠缠键盘。 当您查看的不仅仅是一个键时,您需要将所有当前按下的KeyStrokes存储在地图中。