Java KeyBindings输入延迟

imu*_*ion 1 java swing key-bindings keyboard-events

我不太确定如何说出这个问题的标题.基本上我用JFrames制作太空入侵者,并使用KeyBindings进行键盘输入.键绑定工作正常,我可以毫无问题地移动船只.然而,如果我按住一个键,船会移动5个像素,然后暂停约半秒钟,之后它会平滑移动.当按下键时,我的代码会增加船的速度(每帧移动5-10个像素).我假设这是键盘输入的常见和正常行为,但我希望船舶能够顺畅地移动.有没有办法实现这个目标?

(注意:我的代码很长,因为我认为这是正常的事情发生,我不会立即发布.但是,如果你确实需要看到它,请留下评论,我会编辑它在.)

cam*_*ckr 5

延迟取决于操作系统.每个操作系统定义自己的"重复率",用于在按下键时生成事件.

秘诀是在按下键时启动Swing Timer,然后使用Timer生成事件来执行动画,然后在释放键时停止Timer.这样,您可以独立于操作系统控制动画间隔.

使用键盘查看动作.该KeyboardAnimation示例代码显示,你可以做到这一点的方法之一.