【问题标题】:how to dynamically scale a screen in coronasdk如何在 coronasdk 中动态缩放屏幕
【发布时间】:2014-07-14 06:48:26
【问题描述】:

我当前的配置文件适用于 ipad Retina,它可以完美运行,但是当我选择屏幕较小的设备时,图像会变形。 这是我当前的 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,
        }
    }
}

我想知道是否有一种方法可以动态设置宽度或高度,而无需为每个单独的设备硬编码这些数字。

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    为此我使用信箱缩放。

    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 图像后缀是图像的 2 倍和 4 倍。

    这是一篇出色的文章,可让您了解电晕缩放功能: http://coronalabs.com/blog/2010/11/20/content-scaling-made-easy/

    【讨论】:

      【解决方案2】:

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

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

      由于可用的分辨率差异很大,因此使用 每个设备的比例相同。如果你在 iPhone 上没关系 320×480 的 3GS 或 1536×2048 的 Retina iPad,位置 (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,
            },
         },
      }
      

      【讨论】:

      • 谢谢你!!我确实读过那篇文章,但在使用较小的设备时仍然存在一些图像质量下降的问题。即图像在视网膜 ipad 上显示良好,但在 sgs3 上显示失真。它们只有 60x60 png 圆,似乎被拉长了。上述配置在所有设备上显示与像素化相同的图像。使用:local rightarrow = display.newImage ("righticon.png") 任何想法都将不胜感激
      • 尝试增加配置中的分辨率,320 -> 800 和 480 -> 1200。然后让我知道它是否变得更糟或更好。
      • 是的似乎已经解决了这个问题,但又产生了另一个问题……使用信箱缩放导致我的车轮从瓷砖之间的缝隙中掉下来(即使没有)……我以前一直使用 scale = "none"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多