我正在一个小行星射击游戏中创建和移除物体,只有在某些情况下它会崩溃,我会得到这个错误:
07-16 19:35:05.071:错误/AndroidRuntime(3553):致命异常:
线程11
07-16 19:35:05.071:错误/AndroidRuntime(3553):
java.lang.IllegalStateException异常
07-16 19:35:05.071:错误/AndroidRuntime(3553):位于
删除$(69)
这是测试子弹与小行星碰撞的代码:
public void shotAstrCollision(){
asterItr = asteroids.listIterator();
while(asterItr.hasNext()){
aster = asterItr.next();
shotItr = shots.listIterator();
while(shotItr.hasNext()){
shot = shotItr.next();
float shotToAst = (float) Math.sqrt((aster.x + astW/2 - shot.x)*(aster.x + astW/2 - shot.x) + (aster.y + astH/2 - shot.y)*(aster.y + astH/2 - shot.y));
if (shotToAst < astW/2){
//asteroid is shot
aster.power -= shot.power;
shotItr.remove();
shotCount--;
createExplosion(aster.x + astW/2, aster.y + astH/2);
SoundManager.playSound(1, 1);
if (aster.power <= 0) {
asterItr.remove();
astCount--;
}else{
aster.shotColor = ASTEROID_SHOT_PAINT_FRAMES;
}
}
}
}
}
你知道在哪里寻找这个错误的可能原因吗?
最佳答案
小行星被射出后,你需要冲出内循环,在那里你在重复射出。你的代码是发现两个不同的镜头击中同一个小行星,并试图删除同一个小行星两次。顺便说一句,这也可能导致碰撞检测出现问题。