2012-03-19 133 views
11

這將是尋找可能不存在的答案的那些尷尬問題之一,但這裏有。Corona SDK跨設備屏幕分辨率

我一直在開發一些使用Corona的簡單遊戲,雖然功能似乎在我測試過的大多數物理設備上工作得很好,但一個主要問題是佈局。我知道你無法完美地爲每一臺設備構建,但我想知道是否有一種常用方法可以讓應用在儘可能多的屏幕上看起來很好。我已經進入到這些設備

  • 的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)

從我所看到的,人們的目標是使用小320x480的比例分辨率,然後讓科羅納高檔到正確的設備分辨率(與任何@ 2倍的圖像的要求),但這導致信箱或裁剪取決於t他config.lua比例設置。雖然它的尺寸正確,但有一個信箱並不好。

所以我最好不要在配置文件中指定寬度&高度,而是先使用某種屏幕檢查來查找1.33/1.5/1.77長寬比?當然,對於Corona SDK的全部內容,開發人員會使用某種「典型」設置來啓動任何新項目?

謝謝

回答

8

看來,我發現基礎上,Ansca網站上的這個論壇的帖子一個很好的解決方案:http://developer.anscamobile.com/forum/2012/03/12/understanding-letterbox-scalling

綜上所述,config.lua應該是這樣的:

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

爲舊設備創建360 * 570背景圖像。 320x480的屏幕會略微裁剪圖像,並且可以很好地適用於較舊的Android設備。

爲iPad和iPhone視網膜創建1140 * 720的背景圖像 - 這些將在Android上縮放並在iOS上輕微裁剪。

作爲一個例子,在這裏通常將創建一個小320x480的圖像,並用顯示它:

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

..代替創建360x570背景,並使用以下代碼:

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

這是隻是一個總結,所以檢查鏈接更詳細的說明。

3

那麼,如果你想爲不同的設備拍攝正確的圖像,你可以使用稍微偏離2的數字進行縮放。例如:

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

其中「background.png」將是iPhone4的一個640x960的圖片,而「背景iphone3.png」將是小320x480(你鴕鳥政策需要這個,但會降低存儲需求爲iphone3應用程序)。 「background-ipad3.png」將需要1536x2048(對於-ipad2來說是一半)。

當然,它不能解決屏幕定位的高寬比問題,但它可以解決所有其他gfx相關問題。請記住使用display.newImageRect,而不是display.newImage,否則您將看不到任何區別。