我编写了一款突破游戏,其中我使用java.awt.event KeyListener处理输入。
每次我调用repaint()时;在我的javax.swing计时器中,我正在检查键盘输入,并根据所按下的键来增大/减小播放器的x位置。问题是,当我想朝相反的方向移动时,我的播放器静止了片刻,然后开始移动。我知道这很现实,但是我不希望这成为一个功能。我希望玩家朝相反的方向缓慢移动。
我的计时器每1000/60秒被调用
@Override
public void actionPerformed(ActionEvent e) {
switch(keyHandler.key) {
case "LEFT":
player.x -= player.speed;
break;
case "RIGHT":
player.x += player.speed;
break;
default:
}
repaint();
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_LEFT:
case KeyEvent.VK_A:
case KeyEvent.VK_NUMPAD4:
key = "LEFT";
break;
case KeyEvent.VK_RIGHT:
case KeyEvent.VK_D:
case KeyEvent.VK_NUMPAD6:
key = "RIGHT";
break;
default:
key = "" + e.getKeyChar();
}
}