我正在创建一个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
有什么建议吗?
所以基本上,当你在一个线程睡眠阶段,一切都将停止,直到睡眠是完整的。你需要做的是对所有事情进行状态检查。如果玩家处于死亡状态,那么这意味着其他一切都不应该被激活,并且不会使用thread.sleep()(仅仅因为它会停止整个线程) – Kevin
啊。我想了很多。我试图完成的是在更改GameState之前让动画播放。如果没有某种停顿,动画不会播放,并且GameState在播放器死后几乎立即发生变化。 – 16trohrt