我正在开发适用于Android的砖块破坏者游戏。目前,我正在使用ArrayList作为砖块。我需要在与球碰撞时从列表和屏幕中单独删除每一个。目前,当球与阵列中最后一块砖(右下角)碰撞时,阵列的一半被移除(每隔一块砖)。再次与它碰撞时,它会随机移除一些砖块,但这些都不是我所需要的。
这是我的代码。 brick
是Bricks 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;
}
}
答案 0 :(得分:0)
您必须使用Iterator
:
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;
}
}
或者您可以反转原始代码以从最后删除砖块。