2012-03-19 20 views
11

Questa sarà una di quelle domande scomode alla ricerca di una risposta che probabilmente non esiste, ma ecco qui.Risoluzione schermo dispositivo corona SDK

Sto sviluppando alcuni giochi semplici con Corona e mentre la funzionalità sembra funzionare piuttosto bene su gran parte dei dispositivi fisici su cui ho provato, l'unico problema principale è il layout. So che non puoi davvero costruire per ogni singolo dispositivo alla perfezione, ma mi chiedo se esiste un metodo comune per far sembrare un'app buona su più schermi possibili. Ho accesso a questi dispositivi

  • iPad 1 & 2: 4: 3 (1,33)
  • iPhone 960 × 640 3: 2 (1,5)
  • iPhone 480x320 3: 2 (1,5)
  • Galaxy Nexus 16: 9 (1,77)

da quello che ho visto, le persone hanno lo scopo di utilizzare 320x480 come una di queste risoluzioni e poi lasciare Corona di alto livello per la risoluzione dispositivo corretto (con qualsiasi @ immagini 2x come richiesto), ma questo porta a letterboxing o ritaglio a seconda di t he config.lua impostazione della scala. Mentre scala in modo corretto, avere una cassetta delle lettere non è eccezionale.

Quindi sarebbe meglio non specificare una larghezza & altezza nel file di configurazione, ma invece di utilizzare una sorta di controllo dello schermo in un primo momento per cercare proporzioni 1.33/1.5/1.77? Sicuramente con l'intero punto di Corona SDK, ci sarebbe una sorta di configurazione "tipica" che gli sviluppatori usano per l'inizio di qualsiasi nuovo progetto?

Grazie

risposta

8

Sembra che ho trovato un buon soluzione basata su questo post del forum sul sito Ansca: http://developer.anscamobile.com/forum/2012/03/12/understanding-letterbox-scalling

In sintesi, il config.lua dovrebbe assomigliare a questo:

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

Creare immagini di sfondo a 360 * 570 per dispositivi precedenti. Gli schermi 320x480 ritagliano leggermente l'immagine e scaleranno bene per i dispositivi Android meno recenti.

Creare immagini di sfondo a 1140 * 720 per iPad e iPhone retina - ancora queste si ridimensioneranno su Android e saranno leggermente ritagliate su iOS.

A titolo di esempio, in cui normalmente creare un'immagine di 320x480 e visualizzare con:

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

.. invece creare uno sfondo 360x570 e utilizzare il seguente codice:

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

Questo è solo un riassunto, quindi controlla il link per istruzioni più dettagliate.

3

Bene, è possibile utilizzare un numero leggermente diverso da 2 per il ridimensionamento se si desiderano immagini corrette per i diversi dispositivi. Es:

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

in cui "background.png" sarebbe un'immagine di 640x960 per l'iphone4, mentre "background-iphone3.png" sarebbe 320x480 (Non è necessaria questa, ma sarà ridurre il fabbisogno di memoria per applicazioni iphone3). "background-ipad3.png" dovrebbe essere 1536x2048 (e metà di quello per -ipad2).

Ovviamente non risolve le proporzioni per il posizionamento dello schermo, ma lo risolve per tutti gli altri problemi relativi a gfx. Ricordati di usare display.newImageRect, non display.newImage o non vedrai alcuna differenza.

Problemi correlati