2016-06-29 3 views
1

Я использую LibGDX для создания Android-игры на Eclipse. Я создал экземпляр класса Image. Я не уверен, что я должен распорядиться им. Я создал его так:Libgdx - Image class dispose

img = new Image(new Texture("img.png"));

Я создал текстуру, как хорошо, но я не мог найти способ распоряжаться его. Что мне делать?

ответ

0

Ну, похоже, что Texture реализует disposeable, так что это был бы собственный объект, который должен быть удален. Вы можете прочитать this documentation.

Вы создали изображение с анонимной текстурой, что означает, что у вас нет имени, с которым вы можете ссылаться, поэтому вы не можете его уничтожить. На ваш объект Texture нужно ссылаться где-нибудь в вашем коде, чтобы вы могли распоряжаться им в определенное время. Обычно у меня был бы статический класс Assets, который обрабатывал бы все активы при необходимости (при остановке приложения). Такие классы, как Image, используют эти активы, но им не нужно беспокоиться об их утилизации. Надеюсь, это поможет.

+0

Спасибо за ответ. Мне нужно «img» быть Актером, чтобы я мог добавить его на свою сцену. Какой класс я могу использовать, чтобы не беспокоиться об утилизации текстуры? –

0

Это очень опасно для хранения единственной ссылки на одноразовый актив в части графического объекта вашей игры. Используйте AssetManager или, по крайней мере, используйте один класс, который отслеживает все ваши текстуры и звуки и т. Д. (Но серьезно, используйте AssetManager - он имеет встроенный подсчет ссылок). Тогда только этот класс должен обрабатывать удаление всех одноразовых. Ваш актер может иметь ссылку на текстуру, но он не должен содержать единственную ссылку и не несет ответственности за распоряжение активом.

assetManager.load("img.png", Texture.class); 
assetManager.finishLoading(); 

img = new Image(assetManager.get("img.png", Texture.class)); 

//... 
assetManager.dispose(); 
Смежные вопросы