Corona的工程配置

本文详细介绍了在Corona游戏引擎中如何通过config.lua文件进行应用配置,包括内容大小的设定、动态图片选择的实现以及内容属性的获取。通过设置内容大小、使用动态图片选择功能,开发者能够使应用在多种设备和屏幕分辨率上运行流畅。此外,文章还阐述了如何利用内容区域的概念来精确控制内容布局,并提供了实际应用中的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Corona中,我们使用config.lua文件来对应用进行配置,该文件是以Lua语言语法来写的,要放在工程根目录下。

一.基本结构

config.lua文件是由一个application表中存放一个content表来构成。

application =
{
    content =
    {
        -- Parameters
    }
}

二.内容大小

因为大多数的应用开发要运行在多设备和多屏幕分辨率上,Corona拥有几个内容大小的选项。这允许你使用一系列屏幕坐标体系,而Corona会自动调整文本、矢量对象、图片的大小来满足不同的分辨率。

Corona可以根据你设置的起始分辨率来从上面或者下面来调整大小,也可以替代不同分辨率的图片文件,来确保你的应用在所有设备上都可以运行的流畅。

在内容大小背后的基础概念是内容区域。在Corona中,你的基础内容区域可以设置成任何想要的大小,但通常被设置一个宽/高比例为2:3,例如320x480。

内容区域指的是总体的”stage(舞台)”,在上面可以放置文本、矢量对象和图片对象。每个事物都相对于这个内容区域来放置的,有可能与实际的像素分辨率不搭配。内容区域会改变大小来适应屏幕,但是会有一些细微的区别,由scale定义的。

内置的坐标系统也取决于内容区域,坐标点(0,0)位于内容区域的左上角,而不一定是屏幕的左上角。想获得更多的坐标系统,请看Group编程

宽度|高度

内容区域是由config.lua文件中的widthheight值来定义的。如果你忽略或者将他们设置为0的话,内容大小不会被使用。

application =
{
    content =
    {
        width = 320,
        height = 480,
    }
}

重要:内容区域总应该以竖屏方向来定义,如果你的应用要设置成横屏方向的话,你仍然应当根据竖屏方向来设置widthheight。例如,在上面的例子中,如果设置成横屏应用的话,你应当还是使用width为320,height为480,而不是480和320.

为了在实际的设备上控制应用的方向,你必须要在build.settings文件中定义特定的参数,阅读工程构建设置

规模大小(scale):内容区域的大小是由scale值来决定的,如果你忽略这个的话(不推荐),widthheight的值会被忽略,内容区域将会被设置成设备的真实像素宽度和高度。

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

scale可能的值可以是下面这样:

  • letterbox
    缩放内容区域来填充屏幕,但仍然会保持相同的比例(即等比例缩放)。整个内容区域会放置在屏幕上,但是在与设置的内容区域比例不同的设备上可能会导致”black bars(黑条)”。当然,你仍然可以使用这个空白区域来放置可视化元素。
  • zoomEven
    将内容区域调整来填充屏幕,但仍然会保持相同的比例。在与设置的内容区域比例不同的设备上一些内容可能会丢失掉。
  • adaptive
    这种模式在OS X桌面应用、Win32桌面应用和WP应用上不支持。
  • zoomStretch
    这种模式不推荐,因为它可能扭曲内容区域。

xAlign|yAlign:
默认,内容是位于屏幕的中央,在letterbox大小模式下,空白屏幕区域将会平均分在两侧。在zoomEven模式下,丢掉的区域会平均分配在两侧。

如果你需要将内容区域设置在屏幕的特定边缘,你可以使用xAlign或者yAlign

  • xAlign:字符串值,可以取值为:leftcenterright
  • yAlign:字符串值,可以取值为:topcenterbottom
application =
{
    content =
    {
        width = 320,
        height = 480,
        scale = "letterbox",
        xAlign = "left",
        yAlign = "top"
    }
}

三.动态图片选择

除了内容大小外,Corona还支持动态图片选择。如果你想要开发出来得应用同时支持普通的和Retina/HD设备的话,你不应当指望Corona来简单地调整图片的大小,这将会几个问题。

解决方法是为每张图片创建多个版本,为两个或者三个不同的分辨率来准备。根据它们属于的图片集来命名。在每个设备上,Corona将自动选择最搭配的图片。

注意:这个特点只支持使用display.newImageRect()展示的图片和从包含整体图片集尺寸的image sheets提取的精灵和图片。

为了设置动态图片选择,你必须要在content表中包含imageSuffix表。在表中,至少要声明一个键值对,包含一个image suffix(图像前缀)和一个scale factor(缩放因素)

imageSuffix =
{
    ["@2x"] = 2.0,
    ["@4x"] = 4.0
}
  • image suffix(图像前缀):准备的图片格式myImage@2x.png 或者 myImage@4x.png
  • scale factor(缩放因素):这个值将会声明了Corona使用前缀中的哪个。下面的代码会帮你决定适当的值:print( display.pixelWidth / display.actualContentWidth )

四.内容属性

  • display.contentWidthdisplay.contentHeight :只读属性,代表内容的起始宽度和高度
  • display.pixelWidthdisplay.pixelHeight:只读属性,代表整个屏幕的宽度和高度
  • display.viewableContentWidthdisplay.viewableContentHeight :只读属性,代表可视化的宽度和高度。如果你使用zoomEven时,这是非常有用的,因为它会暴露可视化的量度(没剪切)
    • display.actualContentWidthdisplay.actualContentHeight :只读属性,代表以Corona内容屏幕单元的宽度和高度。结果取决于scale设置。
    • display.contentCenterXdisplay.contentCenterY:只读属性,代表内容区域的中心点。

五.运行时错误

六.帧率

帧率默认是每秒30帧,但是你可以将它设置为每秒60帧

application =
{
    content =
    {
        fps = 60,
    }
}

七.应用证书

八.着色器精度

这用来重写默认的着色器精度,为所有OpenGL ES着色器。接收的值有"highp", "mediump", 和 "lowp"

你不应当声明这个除非你一定想要更高的精度。

application =
{
    content =
    {
        shaderPrecision = "highp",
    },
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值