我在 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 一起工作,所以如果我按左然后向上,但没有释放左并向上释放,则对象不会移动(仍然按下左)。
我该如何处理?是否可以在我的 keylistener 的 keypressed 方法中触发 keypressed 事件,直到 leftpressed 为假?
有任何想法吗?
提前致谢