私はJavaを使ってゲームを作っており、ユーザーがメニュー画面で「再生」を押すとゲーム画面で3からカウントダウンするためにタイマーを使いたいと思っています。私のタイマーはJavaで正しくカウントされません
ここに私のコードです:
int seconds = 3;
private void countdown(Graphics g) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run() {
if(seconds >= 0) {
System.out.println(seconds);
seconds--;
}
if(seconds == -1) {
timer.cancel();
}
}
};
timer.schedule(task, 1000, 1000);
}
私はここに私のゲームのdrawメソッドでカウントダウンを使用します。
public void draw(Graphics g) {
//background
g.setColor(Color.BLACK);
g.fillRect(0, 0, WIDTH, HEIGHT);
//count
countdown(g);
}
私はこれを変更しますが番号を印刷するには、コンソールを使用しています後でdrawString()を使用して、カウントダウンを画面に描画します。
私のメニュー画面で「再生」を押すと、ゲーム画面に1秒間の一時停止があり、番号がすべてコンソールに表示されます。問題は、数字の印刷の間に2番目の遅延がないことです。それらはすべて同時に印刷されます。どんな助け?
作品罰金
はたとえば、あなたのスイングタイマーは、そののactionPerformedメソッド次のようになりますActionListenerを使用することができます。 [mcve]を投稿してください。 – shmosel
ドローメソッドを使用しましたが、秒は1秒間隔で減少しましたか? –
私は 'countdown()'メソッドをやっただけで、1秒間隔で0にカウントダウンしました。 'draw()'メソッドが質問にどのように関係しているのか分かりません。 – shmosel