2016-04-23 3 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 
} 

Должны ли обе линии находиться в методе размещения или только первый?

ответ

3

Вам нужно только сделать это один раз. Это тот же объект Texture, поэтому, когда вы распоряжаетесь им по любой ссылке, другой объект больше не может его использовать. Он расположен.

Также вы можете ознакомиться с классом AssetManager, который обрабатывает вещи для вас.

+0

thanx использовали тот же подход, что и у, но я сомневался, что может потребоваться уничтожить все объекты. –

0

Вы используете «кирпичную текстуру» для каждого «кирпича» в ArrayList, так что вы в основном указываете на один и тот же объект, поэтому вам нужно только разобрать «кирпичную текстуру» один раз.

Если вы хотите, чтобы «освободить» массив, вероятно, вы должны вызвать

bricks.clear(); 

Который станет пустым (как без элементов внутри).

Смежные вопросы