sky*_*000 2 java swing key-bindings
我正在尝试键绑定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());
Run Code Online (Sandbox Code Playgroud)
听取两个单独的事件,一个是按下按键,另一个是释放按键的事件.
按键应该设置一个标志,释放它清除标志.然后你可以检查标志的值,而不是不断尝试纠缠键盘.当您查看的不仅仅是一个键时,您需要将所有当前按下的KeyStrokes存储在地图中.