Ciclo di Vita dell'Applicazione
L’interfaccia ApplicationListener
Ogni gioco LibGDX deve implementare l’interfaccia ApplicationListener. Spesso si estende la classe ApplicationAdapter per avere implementazioni vuote di default.
```java public class MyGdxGame extends ApplicationAdapter {
@Override
public void create() {
// Chiamato una volta all'avvio.
// Carica qui asset (immagini, suoni).
}
@Override
public void render() {
// Chiamato ogni frame (60 volte al secondo).
// Pulisci lo schermo, aggiorna la logica, disegna.
}
@Override
public void resize(int width, int height) {
// Chiamato quando la finestra cambia dimensione.
// Aggiorna qui la viewport della camera.
}
@Override
public void pause() {
// Chiamato su Android quando l'app va in background (es. arriva una chiamata).
// Salva lo stato del gioco qui.
}
@Override
public void resume() {
// Chiamato quando l'app torna in primo piano.
// Ricarica risorse perse (texture non gestite).
}
@Override
public void dispose() {
// Chiamato alla chiusura.
// IMPORTANTISSIMO: Libera la memoria nativa (texture, batch, suoni).
// Se non lo fai -> Memory Leak!
}
} ```
Esempio Render Loop
```java SpriteBatch batch; Texture img;
@Override public void create() { batch = new SpriteBatch(); img = new Texture(“badlogic.jpg”); }
@Override public void render() { ScreenUtils.clear(1, 0, 0, 1); // Pulisci schermo (Rosso)
batch.begin();
batch.draw(img, 0, 0); // Disegna immagine
batch.end();
}
@Override public void dispose() { batch.dispose(); img.dispose(); } ```