什么是暂停线程的好方法?

时间:2013-08-28 18:48:58

标签: java multithreading 2d

我正在创建一个java 2D平台游戏,当播放器死亡时,让播放动画时遇到一些麻烦。当玩家死亡时,所有敌人都会被移除,并且会播放爆炸动画。与此同时,玩家开始眨眼。我想要继续大约两秒钟,然后让我的setState()方法切换到“PlayerDeadState”,这基本上是重试或返回主菜单选项屏幕。我使用过Thread.sleep(),但它不起作用,我听说它对GUI线程不好。 这是我的代码:

public void update() {
// check if player is dead
        if(player.dead == true) {

            player.flinching = true;

        for(int i = 0; i < enemies.size(); i++) {
            Enemy e = enemies.get(i);
            e.update();
            e.hit(200);
            if(e.isDead()) {
                enemies.remove(i);
                i--;
                eExplosions.add(
                    new Explosion(e.getx(), e.gety()));
            }   
        }



        gsm.setState(3);
    }
}

如果我注释掉setState()方法,动画就会通过。这个问题是我目前不能同时拥有这两个问题。动画,或加载必要的GameState。我想要两个。 :P

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你可以使用摇摆计时器:

ActionListener listener = new ActionListener(){
    public void actionPerformed(ActionEvent event){
        gsm.setState(3);
    }
};
Timer timer = new Timer(2000, listener);
timer.setRepeats(false);
timer.start();