0

我有这个,每次子弹到达的位置大于我的屏幕宽度时,它都必须被销毁。当我尝试这个时,游戏崩溃了。

“bullet”是我的类,其中包含 i 作为对象。

“bullets”是我的数组列表,包含所有对象。

编辑:现在尝试使用迭代器,但仍然崩溃。

编辑:接受的答案帮助了我。现在工作。谢谢!

public ArrayList<bullet> bullets = new ArrayList<bullet>();
public Iterator<bullet> it = bullets.iterator();

while (it.hasNext()) {
           bullet s = it.next();
           if(s.xPosition > screenWidth - 10) {
               it.remove();
           }
        }
4

1 回答 1

2

迭代列表时,您不能从列表中删除元素。ConcurrentModificationException如果你这样做,你会得到。您应该使用迭代器并从迭代器中删除元素。

Iterator<Bullet> itr = bullets.iterator();
while(itr.hasNext()) {
    if(itr.next().xPosition > screenWidth - 10) {
        itr.remove(i);
    }
}
于 2013-02-11T13:50:12.640 回答