当用户按下四个箭头键(或 wasd)时,我试图让一个角色在一个简单的框架上移动。只要按住箭头键,角色就会继续移动,一旦用户松开键,角色就会停止移动。
在大多数情况下,这是在移动。但是,在快速切换方向时,我会遇到一些奇怪的延迟。看起来好像,当我按下键盘按钮时,java 的 keylistener 将其解释为键“点击”,也就是快速按下和释放,然后确定按钮实际上被按下。
因此,玩家模型的动作会有些卡顿。
我是否正确解释了这一点?这是我的代码,如果有人能理解的话。
处理密钥释放的代码
@Override
public void keyReleased(KeyEvent e)
{
switch(e.getKeyCode())
{
case KeyEvent.VK_W:
case KeyEvent.VK_UP:
case KeyEvent.VK_A:
case KeyEvent.VK_LEFT:
case KeyEvent.VK_S:
case KeyEvent.VK_DOWN:
case KeyEvent.VK_D:
case KeyEvent.VK_RIGHT:
GameController.hero.stopMoving();
break;
case KeyEvent.VK_SPACE:
break;
case KeyEvent.VK_ESCAPE:
break;
}
keyPress = false;
}
我处理按键的代码
@Override
public void keyPressed(KeyEvent e)
{
keyPress = true;
keyCode = e.getKeyCode();
switch(e.getKeyCode())
{
case KeyEvent.VK_W:
case KeyEvent.VK_UP:
GameController.hero.setSpeedBase(new Point(0,-1));
break;
case KeyEvent.VK_A:
case KeyEvent.VK_LEFT:
GameController.hero.setSpeedBase(new Point(-1,0));
break;
case KeyEvent.VK_S:
case KeyEvent.VK_DOWN:
GameController.hero.setSpeedBase(new Point(0,1));
break;
case KeyEvent.VK_D:
case KeyEvent.VK_RIGHT:
GameController.hero.setSpeedBase(new Point(1,0));
break;
}
}
我希望这是足够的信息。任何帮助表示赞赏!让我知道我是否可以做出任何澄清。有没有更简单的方法来做到这一点?