嗨,我正在创建一个小型游戏作为项目。 这个游戏类似于鸡入侵者。
游戏由gameLoop运行,该游戏不断调用渲染(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);
它在鸡上设置一个布尔值,在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)
非常感谢有关如何实施此类事情的帮助或建议。
答案 0 :(得分:0)
由于您已经使用tick()
方法更新游戏,因此您还应该使用它来处理计时器。
创建一个名为延迟或计时器的int
,然后在tick()
方法中减少它,然后检查计时器是否完成并调用爆炸或删除方法。
答案 1 :(得分:0)
好吧我已经设法解决了这个问题 我用过这个:
if(deleteExploasion == 0){
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
exploasions = new LinkedList<Chicken>();
}
}, 2000, 2000);
deleteExploasion++;
}
基本上我删了鸡。
然后我创建了包含所有爆炸的探索LinkedList(带x,y的图像)
然后我开始一次时间周期并每隔几秒重置一次。
非常感谢你的帮助 正如这里提到的,这个方法确实在render()方法中 (就像tick()一样,它也被不断调用)。
如果有人发现我的实施问题会批评评论。