Java 断砖器未从阵列列表中删除砖

Java 断砖器未从阵列列表中删除砖,java,android,Java,Android,我正在为Android开发一款破砖游戏。目前,我正在为砖块使用ArrayList。我需要在与球发生碰撞时从列表和屏幕中分别删除每一个。当前,当球与阵列中最后一块砖(右下角)碰撞时,阵列的一半将被移除(每隔一块砖)。当再次与它相撞时,它会随机移除一些砖块,但这些都不是我所需要的 这是我的密码砖是砖阵列列表中的一个对象 for (int i = 0; i <= bricks.size(); i++) { if (RectF.intersects(brick.rect, ball.rec

我正在为Android开发一款破砖游戏。目前,我正在为砖块使用ArrayList。我需要在与球发生碰撞时从列表和屏幕中分别删除每一个。当前,当球与阵列中最后一块砖(右下角)碰撞时,阵列的一半将被移除(每隔一块砖)。当再次与它相撞时,它会随机移除一些砖块,但这些都不是我所需要的

这是我的密码<代码>砖是砖阵列列表中的一个对象

for (int i = 0; i <= bricks.size(); i++) {
    if (RectF.intersects(brick.rect, ball.rect)) {
        bricks.remove(bricks.get(i));
        ball.dy = -ball.dy;
        score += 10;
    }
}

对于(int i=0;i您必须使用
迭代器

for (Iterator<Brick> it = bricks.iterator(); it.hasNext();) {
    Brick brick = it.next();

    if (RectF.intersects(brick.rect, ball.rect)) {
        it.remove();
        ball.dy = -ball.dy;
        score += 10;
    }
}
for(Iterator it=bricks.Iterator();it.hasNext();){ Brick=it.next(); if(矩形相交(brick.rect,ball.rect)){ it.remove(); ball.dy=-ball.dy; 分数+=10分; } }

或者,您可以反转原始代码以从末尾删除砖块。

我没有影响任何事情是的,我已经做了。在以升序迭代
砖块时调用
砖块.remove()
似乎是个坏主意。为什么要使用
砖块.rect
而不是
砖块.get(i).rect
if
行中?假设
if
行不直接依赖于
i