【发布时间】:2016-07-12 17:58:21
【问题描述】:
如果你按下一个键,玩家会向前走,但如果你按住这个键的时间长一点,玩家就会朝同一个方向移动太久。 我正在使用这段代码来检查玩家正在按下什么键:
private void KeyPressed(java.awt.event.KeyEvent evt) {
key = evt.getKeyCode();
if (key == KeyEvent.VK_W) {
direction = 1;
PlayerMovement();
}
if (key == KeyEvent.VK_S) {
direction = 2;
PlayerMovement();
}
if (key == KeyEvent.VK_D) {
direction = 3;
PlayerMovement();
}
if (key == KeyEvent.VK_A) {
direction = 4;
PlayerMovement();
}
}
【问题讨论】:
-
当用户释放一个键时,你会得到一个
KeyReleased事件。光靠KeyPressed事件的频率是自找麻烦。 -
您基于 KeyEvent 进行操作,我认为这太笼统了。您可以尝试单独使用 KeyPressed 或 KeyTyped(输入字符时)。
-
KeyBindins API 也是一个不错的地方。 KeyListener 经常有焦点问题
-
是的,我得到了一个 keyReleased 事件,但在整个过程之后。那为时已晚。例如,在我按住一个键后循环开始,这意味着当我按住一个键 2 秒时,事件进入一个循环,并且在 6 个动画之后我的播放器停止,因为 keyReleased 事件触发
标签: java key keylistener