Este ciclo de vida nos obliga a implementar cuatro métodos que se invocan en el siguiente orden:
- onCreateEngineOptions()
- onCreateResources()
- onCreateScene()
- onPopulateScene()
onCreateEngineOptions() : en este método se crea el objeto Camera que utilizará el motor para visualizar y el objeto EngineOptions. El objeto EngineOptions son las opciones que se aplicarán al objeto Engine que va a controlar el juego. Estas opciones incluyen (entre otras) activar/desactivar música y sonidos, opciones multitouch, opciones de rendering, modo de orientación de la pantalla, modo de resolución de la pantalla, etc.
onCreateResources() : en este método se cargan y se crean los recursos que necesita la Activity. Sonidos, texturas (imágenes), música, fuentes. Dentro de este método, es obligatorio invocar a pOnCreateResourcesCallback.onCreateResourcesFinished() para comunicar a AndEngine que hemos terminado de cargar los recursos.
onCreateScene() : en este método se crea el objeto Scene vacío. Además, en este método se configuran los listeners y handlers de Scene. Este método también debería configurar, si es necesario, los eventos y listeners relacionados con la escena. Cuando se ha configurado el objeto Scene, es obligatorio invocar a pOnCreateSceneCallback.onCreateSceneFinished(scene).
onPopulateScene() : en este método se añaden las entidades hijas a la Scene. Este método se introdujo para separar la creación de la escena de su rellenado con entidades. Como en los dos métodos anteriores, es obligatorio invocar a pOnPopulateSceneCallback.onPopulateSceneFinished() cuando se hayan añadido los hijos.
Ejemplo código completo:
package com.joseanquiles.testandengine;import java.io.IOException;import org.andengine.engine.camera.Camera;import org.andengine.engine.options.EngineOptions;import org.andengine.engine.options.ScreenOrientation;import org.andengine.engine.options.WakeLockOptions;import org.andengine.engine.options.resolutionpolicy.FillResolutionPolicy;import org.andengine.entity.scene.Scene;import org.andengine.entity.scene.background.Background;import org.andengine.ui.activity.BaseGameActivity;public class MainActivity extends BaseGameActivity {private static final int WIDTH = 800;private static final int HEIGHT = 480;private Scene mScene;private Camera mCamera;public EngineOptions onCreateEngineOptions() {mCamera = new Camera(0,0,WIDTH,HEIGHT);EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(), mCamera);engineOptions.setWakeLockOptions(WakeLockOptions.SCREEN_ON);return engineOptions;}public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback)throws IOException {pOnCreateResourcesCallback.onCreateResourcesFinished();}public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback)throws IOException {mScene = new Scene();mScene.setBackground(new Background(0.09804f, 0.6274f, 0));pOnCreateSceneCallback.onCreateSceneFinished(mScene);}public void onPopulateScene(Scene pScene,OnPopulateSceneCallback pOnPopulateSceneCallback)throws IOException {pOnPopulateSceneCallback.onPopulateSceneFinished();}}
No hay comentarios:
Publicar un comentario