Java KeyBindings输入延迟

时间:2014-07-30 19:35:15

标签: java swing keyboard-events key-bindings

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

(注意:我的代码很长,因为我认为这是正常的事情,我不会立即发布。但是,如果你确实需要看到它,请离开评论,我将在其中进行编辑。)

1 个答案:

答案 0 :(得分:5)

延迟取决于操作系统。每个操作系统都定义了自己的"重复率"按住键时生成事件。

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

结帐Motion Using the KeyboardKeyboardAnimation示例代码显示了一种可以执行此操作的方法。