在Corona SDK中调整iPad和iPhone上的图像大小

是否有可能在 Corona SDK 中编写一种特定应用程序的代码,并且可以在 iPad 和 iPhone 上运行,而无需分别更改对象的坐标和图像的大小?是否可以通过 display.contentHeightdisplay.contentWidth 实现?

点赞
用户501459
用户501459

是可以的。例如,如果你的应用程序是针对 640x480 编写的,你可以通过在 config.lua 文件中指定 _缩放方式_,让它自动适配其他分辨率:

application =
{
        content =
        {
                width = 640,
                height = 480,
                scale = "letterbox"
        },
}

更多信息

2012-06-22 20:38:50
用户519924
用户519924

Mud 的观点基本上是正确的。通过设置 Corona SDK 中的“内容宽度/高度”,你的应用程序将被自动绘制和缩放到 iPhone / iPad(+retina)屏幕上。最好的思路是在 320x480 的屏幕上设计你的应用程序,然后提供这个屏幕尺寸的图像。然后,你会创建一个第二组图像用于更大的屏幕。通过使用 Corona 的 display.newImageRect() 函数,它将为 iPhone 加载你的小图像,然后为 iPad / retina 显示屏加载具有更高分辨率的图像。

请看这篇文章: 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,
            ["@4x"] = 4
        },
    },
}

当你调用 display.contentHeightdisplay.contentWidth 时,你只是从 config.lua 文件中读取这些值。如果我需要进行任何特定的定位计算,我倾向于使用一些全局变量。在你的 main.lua 中定义它们:

screenWidth = display.contentWidth - (display.screenOriginX*2)
screenHeight = display.contentHeight - (display.screenOriginY*2)
screenTop = display.screenOriginY
screenRight = display.contentWidth - display.screenOriginX
screenBottom = display.contentHeight - display.screenOriginY
screenLeft = display.screenOriginX
screenCenterX = display.contentWidth/2
screenCenterY = display.contentHeight/2

例如:

companyLogo = display.newImageRect("companyLogo.png",64,64)

你需要一个名为 companyLogo.png 的64x64像素的图像。这将用于 iPhone 4 以下的设备。然后,你需要一个名为 companyLogo@2x.png 的128x128像素的图像。Corona 将自动在 iPhone 4 和 iPad 上使用它。再者,另一张尺寸为 256x256 像素的名为 companyLogo@4x.png 的图像将在 iPad 3 retina 显示器上使用。

2012-06-25 08:38:36