有没有一种简单的方法可以同时检查多个按键?我走路时使用:
this.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent arg0)
{
if(arg0.getKeyCode()==KeyEvent.VK_LEFT)
{
if (checkMovement(-1, user.getFalling()))
{
user.move("left");
}
}
}
});
并且希望能够在移动时按住按钮来“冲刺”。我尝试使用另一个 KeyListener 检查另一个键,然后使用方法“user.sprint()”,但它无法同时识别两个按键。
有什么简单的方法可以检查按键是否按下?我确实有多个线程正在运行,我可以在线程中放置某种 if 语句来检查线程循环时是否按下它吗?
谢谢!
最佳答案
对于你的move
键,你所做的一切都很好。
对于您的冲刺按钮,使用 KeyAdapter#keyPressed
记录何时按下该键,并使用 KeyAdapter#keyReleased
记录何时释放该键(存储它)例如,在 boolean
中)。
然后,当您的移动事件发生时,检查 boolean 值以查看您是在步行还是在冲刺。例如,这里有一个按键适配器,它记录当前按下了哪些按键。
Set<Integer> pressed = new HashSet<>();
this.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent arg0) {
pressed.add(arg0.getKeyCode());
}
public void keyReleased(KeyEvent arg0) {
pressed.remove(arg0.getKeyCode());
}
});
// if pressed.contains(keyCode), that key is currently being held
关于Java 多次按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24747664/