2017-05-20 6 views
0

私は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

'for'の 'i <= bricks.size()'が間違っているようです。 '<='の代わりに '<'を使う? – Pang

+0

は何も影響しませんでした – throwaway713281

+0

はい私はそれをしました。 – throwaway713281

答えて

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; 
    } 
} 

をそれとも、ただ端からレンガを削除するには、元のコードを逆にすることができます。

関連する問題