私が作成しているゲームでは、10 秒間だけ表示してから消えたいというパワーアップがあります。そのため、パワーアップするたびに、Timer
初期遅延を 10 秒 (10_000) に設定してスイングを実行し、繰り返しを false に設定して、1 回だけ実行するようにします。
最初に電源を入れると、意図したように 10 秒間しか表示されませんが、もう一度取得すると、ランダムな時間だけ表示されます (ただし、10 秒を超えることはありません)。そのため、繰り返されるようです。 . setRepeats(false);
では、動作しないときに一度実行した後に停止するにはどうすればよいですか?
これは、電源を入れたときに何が起こるかのコードです。
if(!power.getPowerUp()){
double xAirdrop = xSize - 500;
double yAirdrop = ySize - 500;
power.setX(Math.random() * xAirdrop + 64);
power.setY(Math.random() * yAirdrop + 150);
power.setPowerUp(true);
Timer powerTimer = new Timer(10_000, new ActionListener(){
public void actionPerformed(ActionEvent e){
power.setPowerUp(false);
power.setWidth(power.getCrate().getWidth(null) + 250);
power.setHeight(power.getCrate().getHeight(null) + 250);
}
});
powerTimer.setInitialDelay(10_000);
powerTimer.setRepeats(false);
powerTimer.start();
}