移动平台下,不同设备的宽高比不同,那么必然存在与游戏设计时的宽高比不一致的情况,Corona的解决方案是定义了一个虚拟的屏幕高宽,比如1024*768,然后在不同设备上通过定义的适应模式去调整这个虚拟屏幕。这样写代码时大多数情况下只需要考虑sprite在虚拟屏幕上的位置和大小就可以了,链接:http://www.coronalabs.com/blog/2010/11/20/content-scaling-made-easy/

适应的模式有3种

  • letterbox

这种模式不会由于宽高不匹配,而拉伸或者剪裁屏幕。它类似于在4:3的老电视上面播放宽屏幕电影的效果。当然这样会由于宽高不匹配而留下黑边,Corona也提供了一种方式,让背景图拉伸全屏幕显示,而不是留下黑边。它内部的换算方式,我觉得是按设备能容纳的空间去等比例缩放虚拟屏幕,公式为Wvir / Hvir = Wdevnew / Hdevnew,(Wdevnew,Hdevnew为屏幕上的大小),比如说虚拟屏幕是1024:768,设备比如iphone是480:320,那么iphone上面能容忍最大虚拟屏幕就是426:320,那么X维度上就会留出背景位置。letterbox还提供几种对齐方式,让虚拟屏幕在设备屏幕上面左对齐,右对齐,居中。

  • zoomEven

这种模式不匹配时不会发生拉伸,但会被剪裁,它会等比例缩放去铺满整个屏幕,与letterbox不同的是,letterbox在等比例缩放铺满整个屏幕时,需要考虑设备屏幕是否容纳的下,比如说上面的iphone例子,虚拟屏幕的宽高比是1.333,如果考虑铺满屏幕,那么比例应该是480:360,在高度上面,就会发生剪裁。这种方式在某些对剪裁无所谓的游戏,特别有效,比如飞机游戏,动作过关等等。

  • zoomStretch

这种模式不匹配时会拉伸,但不会被剪裁,它其实就是根据虚拟屏幕的宽高比与设备宽高比,去换算sprite的位置,大小,然后使得整个虚拟屏幕都在设备上显示。

还有最后一个none,其实就是不使用corona提供的设备适应模式,平铺上去。

Corona 不同设备分辨率适应的更多相关文章

  1. 常见手机的设备分辨率、viewport和devicePixelRatio

    常见手机的设备分辨率和viewport分辨率,及其1rem的大小(以vmin为单位) 常见的devicePixelRatio是1, 1.325, 1.5, 2, 2.4, 3.  (具体见下面的表格, ...

  2. iOS设备分辨率

    CHENYILONG Blog iOS设备分辨率 © chenyilong. Powered by Postach.io Blog

  3. unity获取设备分辨率

    设备分辨率 using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void ...

  4. Web移动端设计——移动设备分辨率一览表

    作为在移动端开发的web程序员来说,如果不懂设备的一些性能,在开发上面是非常耗时间的一件事,同时带来负面影响的是项目的进度被拖腿了. 下面是个人收集的一些移动端设备的分辨率参数: 1.  平板设备: ...

  5. ios设备 分辨率(转)

    1 iOS设备的分辨率 iOS设备,目前最主要的有3种(Apple TV等不在此讨论),按分辨率分为两类 iPhone/iPod Touch 普屏分辨率    320像素 x 480像素 Retina ...

  6. 移动设备分辨率(终于弄懂了为什么移动端设计稿总是640px和750px)

    在我开始写移动端页面至今,一直有2个疑问困扰着我,我只知道结果但不知道为什么 问题1:为什么设计师给的设计稿总是640px或750px(现在一般以Phone6为基准,给的750px) 问题2:为什么我 ...

  7. rpx单位与移动设备分辨率

      移动设备的分辨率与rpx   不是所有的单位都适合用rpx   文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论

  8. Js获取移动设备分辨率

    在<head>中引入  <meta name="viewport" content="width=device-width, initial-scale ...

  9. UWP 设备分辨率

    之前看了下网上,分辨率都是用webview js拿或者全屏拿宽高,很有局限性. 研究一下.找到个完美的方法: public Size GetDeviceResolution() { Size reso ...

随机推荐

  1. ACM_小Z的A+B

    小Z的A+B Time Limit: 2000/1000ms (Java/Others) Problem Description: 小Z最喜欢A+B了,没事就研究研究,比如什么大整数A+B(就是100 ...

  2. [转]linux之patch命令

    转自:http://blog.chinaunix.net/uid-9525959-id-2001542.html patch [选项] [原始文件 [补丁文件]] [功能] 给文件1应用补丁文件变成另 ...

  3. [Android]有关外部链接唤醒App需要注意的坑

    移动互联网发展到今天,一个移动app需要和各种各样的外部链接关联,它不再仅仅从手机的桌面启动,更多的将会从其他的应用.浏览器链接.短信.二维码或者微信分享等渠道启动,这里涉及到的是各种各样的营销渠道和 ...

  4. HDU_1848_博弈,sg函数

    Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  5. 扩增子图表解读5火山图:差异OTU的数量及变化规律

    火山图 Volcano plot 在统计学上,火山图是一种类型的散点图,被用于在大数据中快速鉴定变化.由于它的形成像火山喷发的样子,所以被称为火山图.和上文讲的曼哈顿图类似.   火山图基本元素 火山 ...

  6. spring boot 2.0 报错:“jdbcUrl is required with driverClassName.” 解决办法!

    springboot 升级到2.0之后发现配置多数据源的时候报错: "jdbcUrl is required with driverClassName."或者Cause: java ...

  7. img、a标签的使用

    <!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...

  8. openstack——nova计算服务

    一.nova介绍               Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是 ...

  9. Eclipse安装和使用TFS

    第一步下载Tfs插件 去微软官网下载https://www.microsoft.com/en-us/download/details.aspx?id=4240 点击 选择下载 随便放置到一个本地或者服 ...

  10. react 父组件调用子组件方法

    import React from 'react'import '../page1/header.css'import { Table } from 'antd'import Child from ' ...