私が作成し、小惑星のシューティングゲームで、唯一それがクラッシュするいくつかの場面でオブジェクトを削除し、私はこのエラーを取得しています使用している場合:これは、ショット間の衝突をテストコードがあるIllegalStateExceptionがArrayListのイテレータ
を07-16 19:35:05.071: ERROR/AndroidRuntime(3553): FATAL EXCEPTION: Thread-11
07-16 19:35:05.071: ERROR/AndroidRuntime(3553): java.lang.IllegalStateException
07-16 19:35:05.071: ERROR/AndroidRuntime(3553): at java.util.AbstractList$SimpleListIterator.remove(AbstractList.java: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;
}
}
}
}
}
このエラーの原因を調べる場所はありますか?
'remove()'を2つの異なるイテレーター、 'shotItr'と後で' asterItr'に呼び出しています。 'IllegalStateException'をスローする行はどれですか? –