我有一个包含瓷砖的板,而瓷砖包含障碍物。障碍物可以是几种类型之一(墙壁、激光……)。
每一轮游戏我都会执行棋盘,棋盘会执行所有的障碍。一旦执行了障碍并且发生了某些变化,GUI 就会收到通知并刷新受影响的图块。
在 GUI 中,tile 是一个包含重叠图像 (JLabels) 的 OverLayLayout,因此所有重叠图像都是可见的。
现在的问题是当我执行它们时,它会很快,你什么也不会发生。例如,您没有看到激光束出现,播放器将被损坏,但您没有看到它发生...
所以我试图让游戏等待例如 500 毫秒,以便用户可以看到 GUI 更新。我尝试过(但可能做错了):计时器、摆动计时器、倒计时……但我似乎无法让它工作。有想法该怎么解决这个吗?或者也许是等待的替代方案?
提前致谢!
更新: 板内执行如下所示:
Iterator<Obstacle> it = obstacles.iterator();
while (it.hasNext())
it.next().execute(this);
CountDownLatch countDown = new CountDownLatch(1);
setChanged();
notifyObservers(countDown);
countDown.await();
GUI板的更新功能(被通知)如下所示:
final CountDownLatch countDown = (CountDownLatch) arg;
SwingUtilities.invokeLater(new Runnable(){
public void run() {
try {
updateUI();
wait(500);
} catch (InterruptedException ex) { }
countDown.countDown();
}
});