KeyAdapter在java中被卡住了一秒钟

时间:2014-03-17 20:45:29

标签: java keyboard keylistener

我在java中制作一个简单的游戏,而我正在使用键适配器进行键盘移动。它工作正常,但当我切换方向时,播放器在新方向上移动一个像素,然后停一会儿然后就好了(你知道,当你按下键盘上的一个字母时,它写了一个字母,但是如果你拿着它,过了一会儿它会开始流动)。有没有什么办法解决这一问题?或者我应该使用密钥监听器吗?

2 个答案:

答案 0 :(得分:2)

更好的方法是为每个方向设置一个布尔值,例如movingRight。最初是movingRight = false。在keyPressed()中,检查是否按下了右箭头(或D或任何键),如果是,则设置movingRight = true。在keyReleased()中,执行相同操作,但如果相关键已释放,则将布尔值设置为false。然后在主更新循环中,如果movingRight == true将播放器向右移动一个像素,依此类推每个方向。

重申一下,这消除了小的延迟,因为它不依赖于按键事件,而只是确保按键已被按下并且尚未被释放(因此我们知道它被按下)

答案 1 :(得分:0)

我个人会使用keyListeners,它们最适合我。

尝试制作一个简单的方法来检查是否按下了女巫键,然后让它将JLable移动到 窗口上的位置,例如

public static void moveUp()
{
     int x;
     int y;
     x = NewJFrame.playerJLabel.getX();
     y = NewJFrame.playerJLbale.getY();

     y = y + 10;

     NewJFrame.playerJLable.setLocation(x, y);
}