ratio phones phone most common mobile screen-resolution corona aspect-ratio

mobile - phones - Resolución de pantalla Corona SDK Cross Device



phone screen resolutions (2)

Esta va a ser una de esas preguntas incómodas en busca de una respuesta que probablemente no exista, pero aquí va.

He estado desarrollando algunos juegos simples usando Corona y aunque la funcionalidad parece funcionar bastante bien en la mayoría de los dispositivos físicos en los que he probado, el problema principal es el diseño. Sé que realmente no se puede construir para cada dispositivo a la perfección, pero me pregunto si existe un método común para hacer que una aplicación se vea bien en tantas pantallas como sea posible. Tengo acceso a estos dispositivos

  • iPad 1 y 2: 4: 3 (1.33)
  • iPhone 960 × 640 3: 2 (1.5)
  • iPhone 480x320 3: 2 (1.5)
  • Galaxy Nexus 16: 9 (1.77)

Por lo que he visto, las personas intentan usar 320x480 como una resolución escalada y luego permiten que Corona se adapte a la resolución correcta del dispositivo (con cualquier imagen @ 2x según sea necesario) pero esto lleva a un letterboxing o recorte dependiendo de la configuración de la escala config.lua. Si bien escala correctamente, tener un buzón no es genial.

Entonces, ¿sería mejor no especificar un ancho y alto en el archivo de configuración, sino utilizar algún tipo de comprobación de pantalla al principio para buscar relaciones de aspecto de 1.33 / 1.5 / 1.77? Seguramente con el objetivo general de Corona SDK, ¿habría algún tipo de configuración "típica" que los desarrolladores usen para el inicio de cualquier proyecto nuevo?

Gracias


Parece que encontré una buena solución basada en esta publicación del foro en el sitio web de Ansca: http://developer.anscamobile.com/forum/2012/03/12/understanding-letterbox-scalling

En resumen, config.lua debería verse así:

application = { content = { width = 320, height = 480, scale = "letterbox", xAlign = "center", yAlign = "center", imageSuffix = { ["@2x"] = 2, }, } }

Cree imágenes de fondo en 360 * 570 para dispositivos más antiguos. Las pantallas de 320x480 recortarán la imagen ligeramente y se escalará muy bien para dispositivos Android anteriores.

Cree imágenes de fondo a 1140 * 720 para la retina de iPad y iPhone. De nuevo, estas se escalarán en Android y se recortarán ligeramente en iOS.

Como ejemplo, donde normalmente crearías una imagen de 320x480 y la mostrarías con:

local bg = display.newImageRect("bg.png",320x480) bg.x = display.contentWidth/2 bg.y = display.contentHeight/2

.. en su lugar crea un fondo de 360x570 y usa el siguiente código:

local bg = display.newImageRect("bg.png",360x570) bg.x = display.contentWidth/2 bg.y = display.contentHeight/2

Esto es solo un resumen, así que consulte el enlace para obtener instrucciones más detalladas.


Bueno, PUEDE usar un número ligeramente 2 para la escala si desea imágenes correctas para los diferentes dispositivos. Ex:

application = { content = { width = 640, height = 960, scale = "zoomEven", imageSuffix = { ["-iphone3"] = 0.5, ["-ipad2"] = 1.066, ["-ipad3"] = 2.133, }, } }

En el que "background.png" sería una imagen de 640x960 para el iphone4, mientras que "background-iphone3.png" sería de 320x480 (no es necesario, pero reducirá los requisitos de memoria para las aplicaciones de iphone3). "background-ipad3.png" necesitaría ser 1536x2048 (y la otra mitad para -ipad2).

Por supuesto, no resuelve la relación de aspecto para el posicionamiento de la pantalla, pero lo resuelve para todos los demás problemas relacionados con gfx. Recuerde usar display.newImageRect, no display.newImage o no verá ninguna diferencia.