嗨,我正在创建一个小游戏作为一个项目。 该游戏类似于小鸡入侵者。
游戏由 gameLoop 运行,它不断调用 render(Graphics g) 方法来绘制更改,并调用 tick() 方法来更改所有移动对象的 x,y 坐标。
我试图让我的鸡在撞击时爆炸(将它们的图片更改为爆炸).. 我的问题是变化发生得太快,用户看不到它。
我尝试使用以下内容:
timer.schedule(new TimerTask() {
@Override
public void run() {
int temp = deleteExploasion;
exploasions.get(temp).setExplosion(false);
deleteExploasion++;
}
}, /*2*60*1000*/ 1500);
它在鸡上设置一个 boolean 值,并在 1.5 秒内鸡应该在下一个渲染方法中被绘制回来。 但我不断得到
Timer already cancelled.
at java.util.Timer.sched(Unknown Source)
和
Exception in thread "Timer-0" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.LinkedList.checkElementIndex(Unknown Source)
非常感谢有关如何实现这样的事情的帮助或建议。
最佳答案
由于您已经使用 tick()
方法来更新游戏,因此您还应该使用它来处理计时器。
创建一个名为delay或timer或其他东西的int
,并在tick()
方法中减少它,然后检查计时器是否完成并调用爆炸或删除方法。
关于java游戏编程敌人爆炸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30715210/