我一直在使用Java Applet开发一个简单的游戏,其中玩家的目标是在30秒的时间内获得尽可能多的积分。现在,我使用Swing计时器从30秒开始倒计时,一旦达到0标记,就可以使用#34;游戏结束"屏幕显示播放器的分数。我有这些实例变量:
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
screenState = 0;
repaint();
}
};
Timer displayTimer = new Timer(30000, listener);
当玩家点击"播放"按钮,我执行displayTimer.start();
。
然后,我在我的绘画类中的相应案例中有这个:
g.drawString("Time Remaining: " + displayTimer.getDelay()/1000, 650, 100);
所以,显然,现在它只是显示静态"剩余时间:30",屏幕在30秒后切换。我想弄清楚的是我每隔一秒就能重新绘制这个值,以便它成为一个实时计时器。到目前为止,我能找到的唯一帮助是人们使用组件。
答案 0 :(得分:3)
ActionListener listener = new ActionListener() {
int count = 0;
@Override
public void actionPerformed(ActionEvent e) {
if (count++==30) {
screenState = 0;
}
repaint();
}
};
Timer displayTimer = new Timer(1000, listener); // make it 30 times faster
答案 1 :(得分:0)
您可以使用Thread
方法每隔一秒使用sleep
方法使用public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
int count = 0;
while(true)
{
if(count == 30) //end at 30 second
break;
try {
Thread.sleep(1000);
System.out.println("updated");
++count;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
t.start();
}
这是一个小样本,计数为30,间隔为1秒
{{1}}