【发布时间】:2017-05-30 14:44:39
【问题描述】:
我正在开发一个 Java 2D 游戏,我在其中使用了 KeyListener,但正如您可能猜到的那样,它存在聚焦问题,主要是当播放器正在运行并且您长时间按住同一个键时,例如按"W" 向前运行,但是在按住 W 几秒钟后,KeyListener 死掉并且没有键工作,我想使用 KeyBindings,因为大多数人建议将它用于游戏开发,但我找不到任何有用的教程,其中大部分在我的游戏中使用某种形式的按钮和其他无用的功能,那么我怎样才能避免 KeyListener 失去焦点,或者我怎样才能编写一个简单的 KeyBinding 代码,它只会移动玩家,以及游戏中使用的其他简单的东西。
这是我想要的那种键绑定,我知道它不起作用,这是一个例子:
component.getInputMap().put(KeyStroke.getKeyStroke(VK_W),
"move forward")
component.getActionMap().put("released",
releasedAction);
if(releasedAction == true){
Player.playerSpeedY = 7;
} else{
Player.playerSpeedY = 0;
}
FWI:这是当前的 KeyListener 代码:
if(HUD.PlayerHealth > 0){
if(key == KeyEvent.VK_W) {Player.playerSpeedY = -5; keyDown[0]= true;}
if(key == KeyEvent.VK_S) {Player.playerSpeedY = 5; keyDown [1]= true;}
if(key == KeyEvent.VK_A) {Player.playerSpeedX = -5; keyDown [2]= true;}
if(key == KeyEvent.VK_D) {Player.playerSpeedX = 5; keyDown [3]= true;}
}
我一直在寻找动作和输入映射教程或 KeyBinding 的教程,但我没有找到任何有用的东西,另一个面团,动作和输入映射中的组件,它的用途是什么?,我的整个代码是否应该基于对此,有没有办法只让动作地图移动玩家,仅此而已?
【问题讨论】:
标签: user-interface keyboard game-physics keylistener