我有一个循环
while (true) {
game.update();
view.repaint();
Thread.sleep(DELAY);
}在game.update中,游戏的各个组件的位置都发生了变化,这些更新会在视图上调用repaint()方法时反映出来。视图扩展了JComponent,循环通过游戏对象并调用它们的print方法。
我想要做的是在游戏中有一个名为nextLevel的布尔值,如果它是真的闪光文本,在屏幕上,玩家通知他们,他们将进入下一关。也许会闪现4-5次。然后继续游戏。这个是可能的吗?我一直在玩Thead.Sleep(),但这似乎只是暂停了显示,而在后台,游戏仍在进行。
你有什么建议吗?
发布于 2015-03-19 10:06:21
也许您希望通过使用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方法中的代码。
希望能有所帮助
https://stackoverflow.com/questions/29135313
复制相似问题