我遇到一些问题,需要一些能够检测按键释放的代码。我正在写一个视频游戏,我想通过按键来触发图标的移动,并在键被释放后终止移动。我已经阅读了其他人的帖子,他们似乎说处理这个问题的方法是在keyReleased代码中设置一个标志,该标志将终止我认为你将在keyPressed代码中启动的运动。但是,我假设您必须将一个Thread.Sleep放入KeyPressed代码中,以便允许KeyReleased代码触发(这会设置标志)?否则控制永远不会从KeyPressed代码返回到调度循环?
无论如何,这是我无法开始工作的代码,应该提取密钥' a'
的发布。MoveGunLeftActionReleased aKeyActionReleased = new MoveGunLeftActionReleased();
...
...
statusPanel.getInputMap().put(KeyStroke.getKeyStroke("released a"), "aCharKeyReleased");
statusPanel.getActionMap().put("aCharKeyReleased", aKeyActionReleased);
... ...
static class MoveGunLeftActionReleased extends AbstractAction
{
public void actionPerformed(ActionEvent rf) {
System.out.println("RELEASED");
aKeyReleased= true;
}
}
对象:aKeyActionReleased永远不会执行。
我做错了什么?
答案 0 :(得分:3)
KeyStroke.getKeyStroke("released a")
这不是正确的格式。它应该是:
KeyStroke.getKeyStroke("released A")
如果您需要更多帮助,请发布显示问题的正确SSCCE。