2016-04-23 13 views
1

ちょっと、Libgdxの初心者です。私は少し物事を処理することについて混乱しています。Libgdx - 何度も繰り返しましたか?

Texture brickTexture; 
Array<Brick> bricks; 

public Game { 
    brickTexture = new Texture("brick.png"); 
    bricks = new Array<Brick>(); 

    for (int i = 0; i < 10; i++) { 
     Brick brick = new Brick(i, brickTexture); 
     bricks.add(brick); 
    } 
} 

void dispose() { 
    brickTexture.dispose(); // brick texture loaded in this class 
    for (Brick brick : bricks) brick.brickTexture.dispose(); // disposing the public texture which was earlier passed on to the brick class 
} 

両方の行がdisposeメソッド内にあるか、最初の行だけでなければなりませんか?

答えて

3

これは一度だけ行う必要があります。これは同じTextureオブジェクトなので、他のオブジェクトがそれを使用することはできません。それは処分されている。

また、あなたのために材料を処理するAssetManagerクラスをチェックしたいと思うかもしれません。

+0

thanxは、私が言ったのと同じアプローチを使用しましたが、すべてのオブジェクトに対して処分する必要があるかもしれないという疑いがありました。 –

0

ArrayListのすべての "Brick"に "bricktexture"を使用しているので、基本的に同じオブジェクトを指しているので、 "bricktexture"は一度しか処理しないでください。

あなたも「自由」配列は、おそらくあなたは(内部の要素を持たないように)空になりますどの

bricks.clear(); 

を呼び出す必要があります。場合

関連する問題