Corona 不同设备分辨率适应
移动平台下,不同设备的宽高比不同,那么必然存在与游戏设计时的宽高比不一致的情况,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提供的设备适应模式,平铺上去。
最新文章
- [连载]《C#通讯(串口和网络)框架的设计与实现》-3.设备驱动的设计
- jquery.cookie.js &;&; java后台代码 操作cookie实现记住当前用户输入信息代码
- 关于 QImage::Format_Mono
- numberOfRowsInSection方法什么时候调用
- Bootstrap 表格 笔记
- shell函数
- 表单美化-原生javascript和jQuery单选按钮(兼容IE6)
- Android动态Java代码调整window大小
- launch文件概述---1
- OpenShare文档管理不完整功能清单
- 【译】Android系统简介
- Google Test Frame 简单使用例子
- Windows2012中Python2.7.11+Python3.4.4+Pycharm
- Java初转型-jdk安装和配置
- 自己写的select元素可编辑、可筛选JQuery插件 jquery.inputselectbox.js
- 成员函数的const到底修饰的是谁
- ubuntu系统界面改变
- php+qrcode类+生成二维码方法
- IDEA 创建包和类及基本操作
- Pandas: 使用str.replace() 进行文本清洗
热门文章
- 题解报告:hdu 1233 还是畅通工程
- 【Leetcode 86】 Partition List
- scala 变量定义,基本操作符
- ubuntu 安装redis以及phpredis
- Laravel5.1学习笔记18 数据库4 数据填充
- asp.net——统计输入的字符数目
- The type new View.OnClickListener(){} must implement the inherited abstract method View.Onclicklis
- http服务器与https服务器的区别
- 查询数据表行数 然后循环查找表 添加数据到ITEMS
- 如何在mac里面,把xcode代码同步到 tfs 的 git库(新git库)