Wie Sie gesagt haben, hat die Sprite-Klasse selbst keine dispose-Methode, also würden Sie die Sprite-Textur entsorgen.
Ein besserer Weg insgesamt wäre jedoch, die AssetManager
class zu verwenden, um die Textur zu laden und zu entsorgen. Auf diese Weise können Sie alle Ihre Texturen an einem Ort verwalten (sodass Sie sie bei Bedarf sofort nach dem Beenden des Programms wieder löschen können).
Hier ist ein Beispiel von einem Spiel, das ich gerade arbeite:
public class Controller extends Game {
@Override
public void create() {
// Some loading stuff ...
// Initialize the asset manager
// TODO: Make a snazzy loading bar
assetManager = new AssetManager();
assetManager.load(ATLAS_NAME, TextureAtlas.class);
assetManager.finishLoading();
// Other loading stuff...
}
// Other methods snipped for space reasons...
@Override
public void dispose() {
// I dispose of things not managed by the asset manager...
// Dispose of any other resources
assetManager.dispose();
}
/**
* Convenience method to safely load textures. If the texture isn't found, a blank one is created and the error is logged.
* @param imageName The name of the image that is being looked up.
* @return
*/
public TextureRegionDrawable getManagedTexture(String imageName) {
try {
return new TextureRegionDrawable(assetManager.get(ATLAS_NAME, TextureAtlas.class).findRegion(imageName));
} catch(Exception e) {
Gdx.app.error(getClass().getSimpleName(), "Couldn't get managed texture.", e);
return getEmptyTexture();
}
}
public TextureRegionDrawable getEmptyTexture() {
return new TextureRegionDrawable(new TextureRegion(new Texture(new Pixmap(1,1, Pixmap.Format.RGBA8888))));
}
}
Zwar habe ich eine flippige Methode, die Asset-Manager wickelt, so dass ich immer eine Textur zurück (auch wenn es leer ist), aber die normale Nutzung von Asset-Manager ist so einfach wie diese:
Texture tex = assetManager.get("my/texture/name.png", Texture.class);
Es arbeitet mit anderen Klassen zu wie Atlanten und Skin.
Ja, es ist der richtige Weg. Dieses [Thema] (http://stackoverflow.com/questions/29574504/libgdx-dispose-sprite-or-texture-in-sprite-ismandatory) erklärt warum. – Squiddie