在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
文件中的width
和height
值来定义的。如果你忽略或者将他们设置为0的话,内容大小不会被使用。
application =
{
content =
{
width = 320,
height = 480,
}
}
重要:内容区域总应该以竖屏方向来定义,如果你的应用要设置成横屏方向的话,你仍然应当根据竖屏方向来设置width
和height
。例如,在上面的例子中,如果设置成横屏应用的话,你应当还是使用width
为320,height
为480,而不是480和320.
为了在实际的设备上控制应用的方向,你必须要在build.settings
文件中定义特定的参数,阅读工程构建设置
规模大小(scale):内容区域的大小是由scale
值来决定的,如果你忽略这个的话(不推荐),width
和height
的值会被忽略,内容区域将会被设置成设备的真实像素宽度和高度。
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
:字符串值,可以取值为:left
、center
、right
yAlign
:字符串值,可以取值为:top
、center
、bottom
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.contentWidth
和display.contentHeight
:只读属性,代表内容的起始宽度和高度display.pixelWidth
和display.pixelHeight
:只读属性,代表整个屏幕的宽度和高度display.viewableContentWidth
和display.viewableContentHeight
:只读属性,代表可视化的宽度和高度。如果你使用zoomEven
时,这是非常有用的,因为它会暴露可视化的量度(没剪切)
display.actualContentWidth
和display.actualContentHeight
:只读属性,代表以Corona内容屏幕单元的宽度和高度。结果取决于scale
设置。display.contentCenterX
和display.contentCenterY
:只读属性,代表内容区域的中心点。
五.运行时错误
六.帧率
帧率默认是每秒30帧,但是你可以将它设置为每秒60帧
application =
{
content =
{
fps = 60,
}
}
七.应用证书
八.着色器精度
这用来重写默认的着色器精度,为所有OpenGL ES着色器。接收的值有"highp"
, "mediump"
, 和 "lowp"
你不应当声明这个除非你一定想要更高的精度。
application =
{
content =
{
shaderPrecision = "highp",
},
}