移动平台下,不同设备的宽高比不同,那么必然存在与游戏设计时的宽高比不一致的情况,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提供的设备适应模式,平铺上去。

最新文章

  1. [连载]《C#通讯(串口和网络)框架的设计与实现》-3.设备驱动的设计
  2. jquery.cookie.js && java后台代码 操作cookie实现记住当前用户输入信息代码
  3. 关于 QImage::Format_Mono
  4. numberOfRowsInSection方法什么时候调用
  5. Bootstrap 表格 笔记
  6. shell函数
  7. 表单美化-原生javascript和jQuery单选按钮(兼容IE6)
  8. Android动态Java代码调整window大小
  9. launch文件概述---1
  10. OpenShare文档管理不完整功能清单
  11. 【译】Android系统简介
  12. Google Test Frame 简单使用例子
  13. Windows2012中Python2.7.11+Python3.4.4+Pycharm
  14. Java初转型-jdk安装和配置
  15. 自己写的select元素可编辑、可筛选JQuery插件 jquery.inputselectbox.js
  16. 成员函数的const到底修饰的是谁
  17. ubuntu系统界面改变
  18. php+qrcode类+生成二维码方法
  19. IDEA 创建包和类及基本操作
  20. Pandas: 使用str.replace() 进行文本清洗

热门文章

  1. 题解报告:hdu 1233 还是畅通工程
  2. 【Leetcode 86】 Partition List
  3. scala 变量定义,基本操作符
  4. ubuntu 安装redis以及phpredis
  5. Laravel5.1学习笔记18 数据库4 数据填充
  6. asp.net——统计输入的字符数目
  7. The type new View.OnClickListener(){} must implement the inherited abstract method View.Onclicklis
  8. http服务器与https服务器的区别
  9. 查询数据表行数 然后循环查找表 添加数据到ITEMS
  10. 如何在mac里面,把xcode代码同步到 tfs 的 git库(新git库)