VISITAS:

viernes, 18 de enero de 2013

Hello World con AndEngine

Antes de empezar a hacer este ejemplo con AndEngine, es necesario tener instalado el motor.
Ver Instalación de AndEngine

1. Abrir Eclipse

2. Crear el proyecto Android

    * File > New > Android Application Project
    Name: HelloWorld
    Package: poner un package cualquiera, por ej com.minombre.android.andengine
    Minimum Required SDK: API 8
    Target SDK: API 15
    Compile With: API 15
    Theme: None
    * Pulsar "Next >"
    Desmarcar "Create custom launcher icon"
    Marcar "Create Activity"
    Desmarcar "Mark this project as a library"
    Desmarcar "Create project in workspace"
    Pulsar "Browse..." y elegir un directorio para el proyecto

    * Pulsar "Next >"
    Marcar "Create Activity"
    Seleccionar "BlankActivity"
    * Pulsar "Next >"
    Activity Name: MainActivity
    Layout name: activity_main
    Navigation type: None
    * Pulsar "Finish"

3. Referenciar la librería AndEngine

    Package Explorer
    Proyecto Hello World (botón dcho) > Properties > Android
    Sección Library: Pulsar "Add..." y añadir la librería AndEngine
    Pulsar "OK"

4. Heredar la Activity de SimpleBaseGameActivity

    Package Explorer
    Abrir MainActivity.java
    Extender SimpleBaseGameActivity
    Eliminar los métodos onCreate y otros que se hayan generado.
    Pulsar sobre la bombilla amarilla a la izda de class > Add unimplemented methods
    Se generarán automáticamente los siguientes métodos:
        onCreateEngineOptions()
        onCreateResources()
        onCreateScene()

5. Crear las variables de clase para la cámara:

private Camera camera;
private static final int CAMERA_WIDTH = 800;
private static final int CAMERA_HEIGHT = 480;

6. Implementar el método onCreateEngineOptions:

@Override
public EngineOptions onCreateEngineOptions() {
this.camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
EngineOptions engOptions = new EngineOptions(
true,   // full screen 
ScreenOrientation.LANDSCAPE_FIXED, 
new FillResolutionPolicy(), 
this.camera);
                engOptions.getAudioOptions().setNeedsSound(true);

engOptions.getAudioOptions().setNeedsMusic(true);

return engOptions;
}

Los parámetros de EngineOptions son:
    true: indica que la Activity ocupará toda la pantalla, incluida la barra de estado.
    LANDSCAPE_FIXED: la pantalla se mostrará en horizontal aunque rote el dispositivo
    FillResolutionPolicy: el motor se adapta al tamaño físico de la pantalla. Esto puede suponer que las imágenes se deformen.

7. Implementar el método onCreateScene:

@Override
protected Scene onCreateScene() {
Scene scene = new Scene();
scene.setBackground(new Background(0.098f, 0.62f, 0.66f));
return scene;
}

Scene es una Entity que contiene otras entities como sprites, etc.

8. Implementar onCreateResources

@Override
protected void onCreateResources() {
loadGraphics();
loadFonts();
loadSounds();
  loadMusic();
}

private void loadGraphics() {
}
private void loadFonts() {
}
private void loadSounds() {
}


private void loadMusic() {
}

 9. Cargar los gráficos

Crear un folder en assets:
    Package Explorer
    Directorio "assets"
    New > Folder
    Folder name: gfx
    * Pulsar "Finish"
Copiar una imagen .png en assets/gfx con el explorador de Windows.
Situarse en el package explorer sobre assets y pulsar F5
Crear las variables de clase:
private BitmapTextureAtlas texture;
private ITextureRegion region;
Implementar el método loadGraphics:
private void loadGraphics() {
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
texture = new BitmapTextureAtlas(getTextureManager(), 128, 128, TextureOptions.DEFAULT);
region = BitmapTextureAtlasTextureRegionFactory.createFromAsset(texture, this, "android.png", 0, 0);
texture.load();
// cuando la textura no sea necesaria: texture.unload();
}

10. Cargar las fuentes

Crear un folder en assets:
    Package Explorer
    Directorio "assets"
    New > Folder
    Folder name: font
    * Pulsar "Finish"
Copiar una fuente .ttf en assets/font con el explorador de Windows (en este enlace hay muchas fuentes ttf para descargar: fuentes )
Situarse en el package explorer sobre assets y pulsar F5
Crear la variables de clase:
private Font font;
Implementar el método loadFonts:
private void loadFonts() {
FontFactory.setAssetBasePath("font/");
final ITexture fTexture = new BitmapTextureAtlas(getTextureManager(), 32, 32, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
font = FontFactory.createFromAsset(getFontManager(), fTexture, getAssets(), "BaroqueScript.ttf", 40, true, Color.BLACK);
font.load();
}

11. Cargar los sonidos

Crear un folder en assets:
    Package Explorer
    Directorio "assets"
    New > Folder
    Folder name: mfx
    * Pulsar "Finish"
Copiar un sonido .ogg en assets/mfx con el explorador de Windows (se recomienda en formato .ogg porque ocupa mucho menos espacio que mp3 por ejemplo).
Situarse en el package explorer sobre assets y pulsar F5
Crear la variables de clase:
private Sound sound;
Implementar el método loadSounds:
 private void loadSounds() { SoundFactory.setAssetBasePath("mfx/"); try { this.sound = SoundFactory.createSoundFromAsset(getEngine().getSoundManager(), this, "risa.ogg"); } catch (IOException e) { Log.e(tag, "loadSounds() " + e.getMessage()); } }


12. Cargar la música

Copiar una cancion .ogg en assets/mfx con el explorador de Windows (se recomienda en formato .ogg porque ocupa mucho menos espacio que mp3 por ejemplo).
Situarse en el package explorer sobre assets y pulsar F5
Crear la variables de clase:
private Music music;
Implementar el método loadMusic:

private void loadMusic() {
MusicFactory.setAssetBasePath("mfx/");
try {
this.music = MusicFactory.createMusicFromAsset(getEngine().getMusicManager(), this, "pantera_rosa.ogg");
this.music.setLooping(true);
} catch (IOException e) {
Log.e(tag, "loadMusic() " + e.getMessage());
}
}






1 comentario:

  1. Amigo una pregunta por que al iniciar mi proyecto ejecuta es el layout y si lo elimino sigue ejecutando el layout por defecto y no el programa en si :o

    ResponderEliminar