我正在創建一個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