2016-04-23 19 views
1

hey bin ein Anfänger in Libgdx. Ich bin ein wenig verwirrt darüber, das Zeug zu entsorgen.Libgdx - Didpose wieder und wieder?

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 
} 

Sollten beide Linien in der Dispose-Methode oder nur die erste sein?

Antwort

3

Sie müssen dies nur einmal tun. Es ist das gleiche Texture-Objekt, also kann es kein Objekt mehr verwenden, wenn Sie es auf irgendeine Referenz verweisen. Es ist entsorgt.

Auch möchten Sie vielleicht überprüfen AssetManager Klasse, die Dinge für Sie entsorgen behandelt.

+0

thanx haben den gleichen Ansatz verwendet, den Sie gesagt haben, aber ich war im Zweifel, dass es eine Notwendigkeit geben könnte, für alle Objekte zu entsorgen. –

0

Sie verwenden "bricktexture" für jeden "Brick" in der ArrayList, also zeigen Sie im Grunde auf das gleiche Objekt, so dass Sie "bricktexture" nur einmal entfernen sollten.

Wenn Sie auch das Array auf „frei“ wollen, wahrscheinlich sollten Sie rufen

bricks.clear(); 

die leer werden wird (wie ohne Elemente innen).