Clase 2
Arquitectura de la aplicacin
Este obra est bajo una Licencia Creative Commons Atribucin-CompartirIgual 4.0 Internacional.
UTN FRA Desarrollo de juegos en Android http://www.lslutnfra.com
SceneManager.getInstance().createGameScene();
GameScene gameScene = (GameScene)
SceneManager.getInstance().getCurrentScene();
pOnCreateSceneCallback.onCreateSceneFinished(gameScene);
}
Puede observarse la utilizacin del mtodo createGameScene del objeto singleton obtenido
mediante getInstance del tipo SceneManager. Luego se obtiene una referencia del objeto
GameScene creado, pidindole al SceneManager la escena actual.
pOnPopulateSceneCallback.onPopulateSceneFinished();
splashFont.load();
}
}
Como se observa, escribimos en nuestra clase SplashScene, que hereda de Scene, el mtodo
createSplashScene, en el cual cargamos un color de fondo en blanco, y creamos un objeto
Text, el cual recibe en su constructor, la posicin (400;240 es el centro de la pantalla), el
objeto Font, el texto a mostrar, y el objeto VertexBufferObjectManager obtenido desde el
objeto Engine. Por ltimo agregamos el objeto Text a la escena mediante attachChild.
Agregamos el manejo de esta escena a la clase SceneManager, comenzando por agregar el
atributo SplashScene:
private SplashScene splashScene;
Luego escribimos los mtodos create y dispose al igual que para la escena del juego:
public void createSplashScene()
{
ResourcesManager rm = ResourcesManager.getInstance();
rm.loadSplashResources();
splashScene = new SplashScene();
splashScene.createSplashScene();
setScene(splashScene);
}
ResourcesManager rm = ResourcesManager.getInstance();
rm.engine.registerUpdateHandler(new TimerHandler(2f,new ITimerCallback() {
@Override
public void onTimePassed(TimerHandler pTimerHandler) {
ResourcesManager rm = ResourcesManager.getInstance();
rm.engine.unregisterUpdateHandler(pTimerHandler);
rm.loadGameResources();
SceneManager.getInstance().createGameScene();
SceneManager.getInstance().disposeSplashScene();
}
}));
pOnPopulateSceneCallback.onPopulateSceneFinished();
}
Como se observa en el cdigo, obtenemos la instancia de ResourcesManager para obtener el
objeto engine, al que le ejecutamos el mtodo registerUpdateHandler al cual le pasamos una
clase annima que hereda de TimerHander y que recibe como argumento el tiempo en que se
ejecutar el callback asignado al timer, y dicho callback, que es una clase annima que
implementa la interfaz ITimerCallback.
Esta interfaz nos obliga que escribir el mtodo onTimePassed, el cual se ejecutar luego del
tiempo prefijado. Dentro de este mtodo volvemos a obtener la referencia de
ResourcesManager para quitar el registro del timer del engine, mediante
unregisterUpdateHandler.
Posteriormente cargamos los recursos del juego mediante loadGameResources (tener en
cuenta que cuando haya muchos recursos, este mtodo es el que va a demorar, mientras
tanto, el usuario sigue viendo en pantalla la escena del splash) y por ltimo ejecutamos el
mtodo createGameScene para que SceneManager cree la escena del juego y la cargue en el
engine y liberemos los recursos utilizados en el splash mediante disposeSplashScene.
10
11