【发布时间】:2013-06-04 19:47:05
【问题描述】:
我在 KeyListener 中为一个非常简单的游戏编写 控件。我遇到了以下问题。
我做了这样的事情(只是一个简单的例子不是我实现的代码):
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
leftPressed = true;
Methodxyz(leftpressed,rightpressed,uppressed)
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
rightPressed = true;
Methodxyz(leftpressed,rightpressed,uppressed)
}
if (e.getKeyCode() == KeyEvent.VK_UP) {
upPressed = true;
Methodxyz(leftpressed,rightpressed,uppressed)
}
}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
leftPressed = false;
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
rightPressed = false;
}
if (e.getKeyCode() == KeyEvent.VK_UP) {
upPressed = false;
}
}
如果我同时按 2 个键(左、上),您可以移动字符对角线。问题是 侦听器使用最后按下的 KeyEvent,所以如果 我按下左键 然后 向上,但 没有释放 left和放开,物体不会移动(仍然按下左键)。
我该如何处理? 是否可以在我的 keylistener 的 keypressed 方法中触发 keypressed 事件,直到 leftpressed 为假?
有什么想法吗?
提前致谢
【问题讨论】:
标签: java keylistener