翻译自Tutorial: Modernizing the config.lua
注意两个概念:
- 内容区域(Content Area)的尺寸(在config.lua文件中定义的尺寸)
display.contentWidth,display.contentHeight
- 屏幕的尺寸(设备的真实尺寸)
display.pixelWidth,display.pixelHeight
如果将scale的值设置为letterBox的话,当内容区域的宽高比例与设备的真实宽高比例相同的时候,便可充满整个屏幕。所以我们希望在config.lua文件中设置的width、height的比例等于设备的宽、高比例。
注意:
坐标原点(0,0)是以内容区域的左上角,而不是屏幕的左上角
所以config.lua文件内容可以这样设置:
local aspectRatio = display.pixelHeight / display.pixelWidth
application = {
content = {
width = aspectRatio > 1.5 and 320 or math.floor( 480 / aspectRatio ),
height = aspectRatio < 1.5 and 480 or math.floor( 320 * aspectRatio ),
scale = "letterBox",
fps = 30,
imageSuffix = {
["@2x"] = 1.5,
["@4x"] = 3.0,
},
},
}
讲解:
我们的目标是将内容区域的宽、高比例设置成与设备的宽、高比相同。
对于基本的320x480设备,我们将内容区域的宽设为320,高设为480。
对于”高”设备,像大都数Android设备、iPhone5s等系列设备,我们固定内容区域的宽为320,而高会自动计算,来确保比例相同。
对于”宽”设备,像iPad等设备,我们固定内容区域的高为480,而宽会自动计算,来确保比例相同。
如今,市场上出现了更高分辨率的设备,这也意味着要支持的小屏设备越来越少。一个便利和现代化的内容区域设置为800×1200。
local aspectRatio = display.pixelHeight / display.pixelWidth
application = {
content = {
width = aspectRatio > 1.5 and 800 or math.floor( 1200 / aspectRatio ),
height = aspectRatio < 1.5 and 1200 or math.floor( 800 * aspectRatio ),
scale = "letterBox",
fps = 30,
imageSuffix = {
["@2x"] = 1.3,
},
},
}
额外补充:
Corona论坛中有一位开发者提供了另一种方案:
local ori_X=display.screenOriginX;
local ori_Y=display.screenOriginY;
print( ori_X,ori_Y );//屏幕的左上角坐标
local width=display.pixelWidth;
local height=display.pixelHeight;//设备的宽、高
print( width,height );
local rect=display.newRect( ori_X, ori_Y, width, height );
rect.anchorX=0;
rect.anchorY=0;
rect:setFillColor( 0,1,1 );
本文讨论了如何在config.lua文件中设置内容区域尺寸,以确保在不同设备上内容能够正确填充屏幕,通过使用letterBox缩放模式,使得应用在各种分辨率设备上都能保持良好的视觉效果。
4641

被折叠的 条评论
为什么被折叠?



