Corona SDK跨设备屏幕分辨率

时间:2012-03-19 11:27:17

标签: mobile screen-resolution corona aspect-ratio

这将是寻找可能不存在的答案的尴尬问题之一,但这里就是。

我一直在使用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作为缩放分辨率然后让Corona升级到正确的设备分辨率(根据需要使用任何@ 2x图像)但这会导致信箱或裁剪,具体取决于config.lua比例设定。虽然它确实可以正确缩放,但有一个信箱并不是很好。

所以我最好不要在配置文件中指定宽度和高度,而是先使用某种屏幕检查来查找1.33 / 1.5 / 1.77的宽高比?当然,就Corona SDK的重点而言,开发人员可以使用某种“典型”设置来开始任何新项目吗?

谢谢

2 个答案:

答案 0 :(得分: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

这只是一个摘要,请查看链接以获取更详细的说明。

答案 1 :(得分:3)

如果你想为不同的设备提供正确的图像,你可以使用稍微偏2的数字进行缩放。例如:

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

其中“background.png”将是iphone4的640x960图像,而“background-iphone3.png”将是320x480(你不需要这个,但它会减少iphone3应用程序的内存需求)。 “background-ipad3.png”需要1536x2048(和-ipad2的一半)。

当然它没有解决屏幕定位的宽高比,但它解决了所有其他gfx相关问题。记得使用display.newImageRect,而不是display.newImage,否则你看不出任何差异。