2011-09-24 12 views
5

Estoy desarrollando un juego usando andeninge. Arreglé la anchura y la altura de la cámaraCómo ejecutar mi juego para una resolución de pantalla diferente usando andengine

private static final int CAMERA_WIDTH = 480; 
private static final int CAMERA_HEIGHT = 320; 

@Override 
public Engine onLoadEngine(){  
    this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 
    final Engine engine = new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new FillResolutionPolicy(), this.mCamera).setNeedsSound(true));  
    return engine; 
} 

En el juego, la imagen del tamaño del edificio es (1020x400). La vista del edificio correctamente cuando camera_widhth y camera_height es 480, 320. Cómo ejecutar mi juego para una resolución de pantalla diferente usando un ícono (usando el mismo tamaño de imagen de construcción).

De lo contrario, necesito cambiar las imágenes de construcción para todas las resoluciones de pantalla?

Respuesta

5

Puede usar la cámara fija, como lo hace ahora, si lo desea. OpenGL ES escalará la vista para llenar la pantalla del dispositivo. Esta es probablemente la solución más fácil, pero cambiará la relación de aspecto o dejará casillas negras debajo/arriba o izquierda/derecha de su pantalla cuando el juego se ejecute en un dispositivo que tenga una relación de aspecto diferente a 1.5 (480/320). Creo que actualmente la mayoría de los dispositivos tienen una relación de aspecto de 1.66 (800/480).

Otra opción es utilizar:

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics) 
CAMERA_WIDTH = metrics.widthPixels() 
CAMERA_HEIGHT = metrics.heightPixels() 

para establecer el tamaño de su cámara y luego combinación de los tamaños de pixel y la densidad de píxeles de las pantallas (ppp) (ver http://developer.android.com/reference/android/util/DisplayMetrics.html) y el uso .setScale a sus Sprites para escalarlos en consecuencia.

juegos
4

andengine escalarán en el dispositivo de forma nativa - así que ...

Si establece su CAMERA_WIDTH/altura a 480x320 y alguien lo ejecuta en un teléfono que es 800x480 su juego será mayor escala hasta 720x480 (1.5x) y habrá un margen de 80px (arriba, abajo, izquierda, derecha o división entre ellos dependiendo de la gravedad de su Vista).

usted tiene que decidir lo que la mayoría de las personas que utilizan su aplicación va a utilizar - tiendo a dirigir 800x480 y vivir con una cierta contracción a pantallas más pequeñas - en lugar de al revés ...

1

Se puede utilizar este Fuente:

@Override 
public Engine onLoadEngine() { 
    final Display defaultDisplay = getWindow().getWindowManager().getDefaultDisplay(); 
    CAMERA_WIDTH = defaultDisplay.getWidth(); 
    CAMERA_HEIGHT = defaultDisplay.getHeight(); 
    this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 
    return new Engine(new EngineOptions(true, ScreenOrientation.PORTRAIT, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera)); 
} 
1

AndEngine por defecto se supone que desea una política de resolución fija. Pero también se puede cambiar, como se indica en el siguiente enlace,

http://android.kul.is/2013/10/andengine-tutorial-dealing-with-screen-sizes.html

O bien, puede seguir este código y modificar su código en consecuencia. (Mi preferencia)

// Calculate the aspect ratio ofthe device. 
float aspectRatio = (float) displayMetrics.widthPixels/(float) displayMetrics.heightPixels; 

// Multiply the aspect ratio by the fixed height. 
float cameraWidth = Math.round(aspectRatio * CAMERA_HEIGHT); 

// Create the camera using those values. 
this.mCamera = new Camera(0, 0, cameraWidth, cameraHeight); 

// Pick some value for your height. 
float cameraHeight = 320; 

// Get the display metrics object. 
final DisplayMetrics displayMetrics = new DisplayMetrics(); 

// Populate it with data about your display. 
this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
Cuestiones relacionadas