Java 2D游戏角色行走?

Java 2D游戏角色行走?,java,2d,Java,2d,我正在使用键绑定,如下面的箭头键: public class Bottom extends AbstractAction { private GameScreen gameScreen; public Bottom (GameScreen p) { this.gameScreen = p; this.gameScreen.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put( KeyStrok

我正在使用键绑定,如下面的箭头键:

public class Bottom extends AbstractAction {

private GameScreen gameScreen;

public Bottom (GameScreen p) {      
    this.gameScreen = p;
    this.gameScreen.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
            KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), "Bottom");     
}

@Override
public void actionPerformed(ActionEvent e) {
    this.gameScreen.getMovement().moveDown();
}

}
然后我通过movement.java检测它们:

public class Movement {

    private Player player;

    public Movement(Player p) {
        this.player = p;
    }

    public void moveRight() {
    }

    public void moveLeft() {
    }

    public void moveUp() {
    }

    public void moveDown() {
    }

    public void jump() {
        this.player.jump();
    }
}
在这里处理:

public class Keybinds {

    private GameScreen panel;

    public Keybinds(GameScreen game) {
        this.panel = game;
        this.addKeybinds();
    }

    private void addKeybinds() {
        addKey("Bottom", new Bottom(this.panel));
        addKey("Space", new Space(this.panel));
    }

    private void addKey(String bind, AbstractAction a) {
        this.panel.getActionMap().put(bind, a);
    }

}
无论如何,操作系统默认有一个按键重复计时器,所以当我点击一个按键时,它是1.3秒左右,然后继续重复。我正在努力使我的比赛顺利进行

我的游戏没有跑步,只有步行,但我不知道我该怎么做


我可以添加行走队列,这样它就可以添加请求的方向&然后是一个循环,循环遍历行走队列并执行此操作,但是当按键开始每毫秒重复一次,或者在主延迟后idk重复延迟时,它会添加如此多的行走队列,你知道,我的角色会走得很远。我想添加一个计时器,这样它就可以每1秒添加一个新队列,但是我该怎么做呢?还是有更好的方法添加步行系统?

编辑:如果已经有解释,则无需解释。
不要使用键盘侦听器。Swing设计用于
键绑定

我想加一个计时器

是的,您应该使用计时器,这样您就不必依赖操作系统密钥的重复率

有关更多信息以及使用键绑定和计时器的示例,请参阅