Pues eso, tengo mi jueguecito que si por ejemplo bloqueas el móvil y lo vuelves a desbloquear, no se pinta nada, no sale ninguna excepción ni ningún mensaje de error. El caso es que el stage.draw() sí que es llamado en el render y solamente se pinta igual que si solo se estuviera haciendo el glClear().
Realmente no tengo ningún tipo de pausa ni nada por el estilo por lo que no debería estar pasando, no?
AbstractScreen solamente define la Stage y poco más (en las demás pantallas también pasa lo mismo y no tengo ni idea de qué puede estar pasando, alguna idea?
Lifecycle de la pantalla
05-02 15:15:33.925: I/Verbose(11660): Showing screen: MainMenu <- Empieza
05-02 15:16:22.015: I/Verbose(11660): Pausing screen: MainMenu <- Bloqueo
05-02 15:16:23.524: I/Verbose(11660): Showing screen: MainMenu <- Presiono para desbloquear
05-02 15:16:24.105: I/Verbose(11660): Resuming screen: MainMenu <- pongo el patrón
05-02 15:16:33.125: I/Verbose(11660): Pausing screen: MainMenu <- ????
05-02 15:16:33.445: I/Verbose(11660): Showing screen: MainMenu <- ??? ni idea de porqué se pone show otra vez
Clase menú:
spoiler
public class MainMenu extends AbstractScreen {
private Skin skinPlay;
private TextButton play;
private TextButton maps;
private TextButton scores;
private TextButton exit;
private TextButton options;
private Image logo;
private Texture textureLogo;
private Table menu;
public MainMenu(TDEngine game, HashMap<String, Object> arguments) {
super(game, arguments);
}
@Override
public void show() {
super.show();
Gdx.input.setInputProcessor(stage);
skinPlay = new Skin(Gdx.files.internal("skins/uiskin.json"));
textureLogo = new Texture("logo.png");
logo = new Image(textureLogo);
logo.setPosition(0, 0);
logo.setWidth(Gdx.graphics.getWidth());
logo.setHeight(Gdx.graphics.getHeight());
play = new TextButton(languages.getString("menu.play"), skinPlay);
play.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
ScreenManager.getInstance().show(Screen.MAP_PICKER);
ScreenManager.getInstance().dispose(Screen.MAIN_MENU);
}
});
maps = new TextButton(languages.getString("menu.maps"), skinPlay);
maps.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
ScreenManager.getInstance().show(Screen.DOWNLOAD_MAPS);
ScreenManager.getInstance().dispose(Screen.MAIN_MENU);
}
});
scores = new TextButton(languages.getString("menu.scores"), skinPlay);
scores.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
ScreenManager.getInstance().show(Screen.SCORES);
ScreenManager.getInstance().dispose(Screen.MAIN_MENU);
}
});
exit = new TextButton(languages.getString("menu.exit"), skinPlay);
exit.setPosition(camera.viewportWidth-exit.getWidth()-10, 0+10);
exit.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
Gdx.app.exit();
}
});
options = new TextButton(languages.getString("menu.options"), skinPlay);
options.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
new OptionsWindow(stage, skinPlay);
}
});
menu = new Table();
menu.setFillParent(true);
menu.add(play).right().padRight(10).padTop(100);
menu.add(maps).left().padLeft(10).padTop(100);
menu.row().expandX();
menu.add(scores).right().padRight(10).padTop(5);
menu.add(options).left().padLeft(10).padTop(5);
stage.addActor(exit);
stage.addActor(menu);
}
@Override
public void render(float delta) {
super.render(delta);
batch.begin();
logo.draw(batch, 1);
batch.end();
stage.act();
stage.draw();
}
@Override
public void resize(int width, int height) {
stage.setViewport(800, 600, true);
}
}