我有这个循环
while (true) {
game.update();
view.repaint();
Thread.sleep(DELAY);
}
在game.update中,游戏的各个组件的位置发生了变化,并且在视图上调用repaint()方法时会反映这些更新。视图扩展了JComponent并循环遍历游戏对象并调用它们的打印方法。
我想要做的是在游戏中有一个名为nextLevel
的布尔值,如果它是真正的Flash文本在屏幕上让玩家通知他们他们将进入下一关。也许闪过4-5次。然后继续游戏。
这可能吗?我一直在玩Thead.Sleep()
,但这似乎暂停了显示,在后台游戏仍在继续。
关于如何做到这一点的任何想法?
答案 0 :(得分:0)
也许您希望通过使用Timer
对象来避免线程化。
这样的例子可能是
int flashTimer = 0;
if(nextLevel) {
Timer timer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
//flash something method here
flashTimer++;
}
});
timer.start();
}
然后检查flashTimer
是否达到了您想要的号码,然后按timer.stop();
停止计时器
这个想法在我看来有点简单。 1000值是传递的毫秒数,每1秒执行actionPerformed
方法内的代码。
希望有所帮助