私のBoggleの一連の質問では、次の質問があります。
プレイヤーがカスタマイズできるタイマーが必要です。Boggleのゲームが始まる前に、プレーヤーは30〜180秒の時間を選択できます。Timer
にリンクして試してみましたがTimerTask
、これはゲームの最初の実行で機能しますが、の秒を変更しTimerTask
て別の実行を行うと、タスクがビジーであるかキャンセルされたと表示されます。ゲームの開始時にリセットされ、カスタマイズ可能な時間制限があるタイマーを実装するための最良の方法は何ですか。Timer
/TimerTask
をリセットできますか?
コード:
クラスカウントダウン:
public class CountDown {
Timer timer;
DisplayCountDown displayCountDown;
public CountDown(DisplayCountDown displayCountDown) {
timer = new Timer();
this.displayCountDown = displayCountDown;
timer.schedule(this.displayCountDown, 0, 1000);
}
public DisplayCountDown getDisplayCountDown() {
return displayCountDown;
}
public Timer getTimer() {
return timer;
}
}
クラスDisplayCountDown:
public class DisplayCountDown extends TimerTask {
private int seconds = 30;
public void run() {
if(seconds > 0) {
seconds--;
} else {
return;
}
}
public void setSeconds(int seconds) {
this.seconds = seconds;
}
public int getSeconds() {
return seconds;
}
}
タイマーをリセットするには、これを試してみます。
countDown = null;
countDown = new CountDown(displayCountDown);
2回目に実行すると、このエラーが発生します。
Exception in thread "main" java.lang.IllegalStateException: Task already scheduled or cancelled
編集:何が問題なのですか?なぜこれがそれほど否定的な評判を得るのですか?私はあなたたちにただ私に解決策を与えるように求めているのではありません、私はあなたたちがそれを嫌うことを知っています、そしてそれは私が望んでいることではありません...私はただ軌道に戻りたいです、クラスの名前は私...すべての明確さのために:私は完成した解決策を求めているのではなく、いくつかのヒントを求めています:/