如何在 Java 中的两行代码之间创建延迟?



我正在用java重新创建经典的街机游戏Space Invaders。我的问题出现在杀死敌人后处理精灵时。由于死亡精灵是敌人可以拥有的精灵之一,所以我基本上要做的是更改显示的精灵,然后删除敌人的对象。有没有办法让精灵显示大约一秒钟,然后删除敌方对象?我也愿意接受其他方法来做这样的事情,因为它可能不如我没有想到的其他一些选择那么有效。

编辑:我之前应该提到这一点,但是任何涉及睡眠线程的事情都会导致整个游戏延迟,这是行不通的。

// stuff detecting collision between missile and enemy
missiles.remove(0);
enemies.get(j).loadImage(2); // loads death sprite for enemy that got hit
// one second delay
enemies.remove(j);

编辑:我想出了我的问题的解决方案。使用摇摆计时器类,我能够在死亡精灵显示后创建延迟,然后移除敌人。发布此内容以防有类似问题的人需要它。

Timer timer = new Timer(600, new ActionListener() {
public void actionPerformed(ActionEvent e) {
enemies.remove(remove); // The enemy is removed when after the allotted delay occurs when timer.start() is called
}
});
// final code after changes
missiles.remove(0);
enemies.get(j).loadImage(2);
remove = j;
timer.setRepeats(false); // makes it so that only one enemy is removed
timer.start(); // after the delay the enemy is removed, enough time for the death sprite to be shown for the allotted delay

Thread.sleep(1000);应该为你做这件事。

有多个选项:

sleep(( 方法来自 Thread 类(捕获中断异常(:

Thread.sleep(1000);

sleep(( 方法来自 java.util.concurrent package 的 TimeUnit 枚举:

TimeUnit.SECONDS.sleep(1);
TimeUnit.MINUTES.sleep(1);

最新更新