Java多按键
有没有一种简单的方法可以同时检查多个按键?我走路用的是:Java多按键,java,key,awt,keypress,keylistener,Java,Key,Awt,Keypress,Keylistener,有没有一种简单的方法可以同时检查多个按键?我走路用的是: this.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent arg0) { if(arg0.getKeyCode()==KeyEvent.VK_LEFT) { if (checkMovement(-1, user.getFalli
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语句来检查当线程循环时它是否被按下吗
谢谢 对于您的
移动
键,您所做的一切都很好
对于sprint按钮,使用KeyAdapter#keyppressed
记录按键按下的时间,使用KeyAdapter#keydrelease
记录按键释放的时间(例如,将其存储在布尔值中)
然后,当移动事件发生时,检查布尔值以查看您是在行走还是在短跑。例如,这里有一个按键适配器,它记录当前按下的按键
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
Set pressed=new HashSet();
this.addKeyListener(新的KeyAdapter(){
按下公共无效键(KeyEvent arg0){
add(arg0.getKeyCode());
}
公共无效密钥已释放(KeyEvent arg0){
按下.remove(arg0.getKeyCode());
}
});
//如果按下.contains(键代码),则该键当前处于按住状态
我找到了一个我非常喜欢的解决方案。如果其他人想知道我是如何做到的,我会在下面发布代码:)
基本上,按键只设置玩家的移动方向。要停止播放机,它会检查您是否按您要去的方向释放了键。我已经尝试过了,但除非我只是做错了,否则每当我按下第二个按钮时,它就会取消按住按钮移动按钮,因此您必须再次按下箭头键。有没有办法绕过这个问题?我做错了吗?@user38829你可能做错了,尽管你还没有发布那段代码,我真的无法进一步评论。您可能还应该使用keyTyped
事件来检测未按住的按钮。我的尝试是:。它仍然需要用户先按Enter键进行冲刺,然后按箭头键移动。但是,按箭头键,然后按enter键,将使播放机停止静止运行
this.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent arg0)
{
if(arg0.getKeyCode()==KeyEvent.VK_LEFT)
{
if (!world.user.moving()) if (world.checkMovement(-1)) world.user.move("left");
}
if(arg0.getKeyCode()==KeyEvent.VK_RIGHT)
{
if (!world.user.moving()) if (world.checkMovement(1)) world.user.move("right");
}
if (arg0.getKeyCode()==KeyEvent.VK_UP)
{
world.user.jump();
}
}
public void keyReleased(KeyEvent arg0)
{
if(arg0.getKeyCode()==KeyEvent.VK_LEFT)
{
world.user.move("left","stop");
}
if (arg0.getKeyCode()==KeyEvent.VK_RIGHT)
{
world.user.move("right","stop");
}
}
});