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