我正在一个小行星射击游戏中创建和移除物体,只有在某些情况下它会崩溃,我会得到这个错误:
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;
                }
            }
        }
    }

}

你知道在哪里寻找这个错误的可能原因吗?

最佳答案

小行星被射出后,你需要冲出内循环,在那里你在重复射出。你的代码是发现两个不同的镜头击中同一个小行星,并试图删除同一个小行星两次。顺便说一句,这也可能导致碰撞检测出现问题。

07-24 09:23