如何在coronasdk中动态缩放屏幕

时间:2014-07-14 06:48:26

标签: lua corona

我当前的配置文件适用于ipad视网膜,它可以正常工作,但是当我选择屏幕较小的设备时,图像会变形。 这是我目前的config.lua

application = {
    content = {
        width = 768,--aspectRatio > 1.5 and 800 or math.ceil( 1200 / aspectRatio ),
        height = 1024,
        scale = "none",
        fps = 60,
        imageSuffix = {
            ["@2x"] = 1.3,
        }
    }
}

我想知道是否有办法动态设置宽度或高度,而无需为每个个体设备硬编码这些数字。

2 个答案:

答案 0 :(得分:4)

我使用信箱缩放。

application = 
{
    content = 
    { 
        width = 320,
        height = 480,
        scale = "letterbox",
        xAlign = "center",
        yAlign = "center",
        imageSuffix =
        {
            ["@2"] = 1.8,
            ["@4"] = 3.6,
        },
    },
}

然后我可以使用display.newImageRect,提供320,480设备分辨率的图像尺寸。 @ 2和@ 4图像后缀是2x和4x的图像。

以下是让您了解电晕放大功能的优秀文章: http://coronalabs.com/blog/2010/11/20/content-scaling-made-easy/

答案 1 :(得分:3)

我建议你阅读这篇关于"the ultimate config/modernizing the config"的文章。

  

有些屏幕更宽,而有些则更窄。如果我们采取   分辨率超出等式,更容易可视化屏幕。   使用Corona可以轻松地将分辨率从图像中分离出来   动态缩放。使用Dynamic Sc​​aling,您可以使用一组通用的   屏幕坐标和Corona将自动缩放文本和   不同分辨率屏幕的图形。它可以向上或向上扩展   向下取决于你的起点。它也可以替代   需要放大时的更高分辨率图像。这是所有的了   由名为config.lua的项目文件夹中的Lua文件管理。

     

由于可用的分辨率差别很大,因此使用它会很有帮助   每个设备的比例相同。如果你在iPhone上并不重要   3GS在320×480或Retina iPad在1536×2048,位置(0,0)   代表左上角和(320,480),垂直纵向   模式,是右下角。屏幕中心是(160,240)。   在这种情况下,每个点是较低分辨率设备上的一个像素   就像3GS一样,它具有320×480的原生屏幕分辨率   Retina iPad上的每个点都是四个像素。不要担心数学    - Corona将为您处理。

     

来源:http://coronalabs.com/blog/2012/12/04/the-ultimate-config-lua-file/

local aspectRatio = display.pixelHeight / display.pixelWidth
application = {
   content = {
      width = aspectRatio > 1.5 and 320 or math.ceil( 480 / aspectRatio ),
      height = aspectRatio < 1.5 and 480 or math.ceil( 320 * aspectRatio ),
      scale = "letterBox",
      fps = 30,

      imageSuffix = {
         ["@2x"] = 1.3,
      },
   },
}