【问题标题】:KeyAdapter gets stuck for a second in javaKeyAdapter 在 java 中卡住了一秒钟
【发布时间】:2014-03-17 20:45:28
【问题描述】:

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

【问题讨论】:

  • 核心问题是操作系统在第一次按键和重复按键之间注入了一个小的延迟,这是它的设计方式

标签: java keyboard keylistener


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我个人会使用 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);
    }
    

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多