Cocos2d-x之多分辨率屏幕适配
一、适配简介
如今市面上的手机种类越来越多,分辨率是千变万化的。但是我们做游戏开发,喜欢自己的游戏可以在各个手机都能合适的运行,那么就需要做多分辨率的适配。
二、retain屏幕概念
之前,苹果手机对480*320和960*640的手机适配策略是这样的,当分辨率是480*320时,寻找的图片是1.png。当分辨率是960*640时,寻找的图片是1@2x.png。这个图片是1.png的2倍大小,这样就能保证在不同的分辨率手机上都能很好的运行。但是,这给我们的美工增加了不小的工作量,而且安装包的大小也会大很多。
cocos2d-x里也有这种策略,它的做法是把图片放在不同的文件夹中。程序运行时,根据接口获取屏幕分辨率,然后进行判断,再设定图片的搜索路径,这样程序中读取图片就会从这个指定的路径读取。
if(Director::getInstance()->getWinSize().width > 480){std::vector<std::string>s;s.push_back("lagre");}else{std::vector<std::string>s;s.push_back("small");}
三、cocos2d-x适配策略
cocos2d-x在2.0.4版本开始提出了自己的适配策略。提出了设计分辨率这样的一个概念。
相关概念:
资源分辨率:就是我们的图片分辨率。
设计分辨率:我们将这个游戏放在这个分辨率的设备上,我们的游戏将完美展示。
设备分辨率:我们手机的分辨率。
那么具体的做法是什么呢?
这个适配过程可以分为两个部分。
1.第一个部分,就是资源分辨率到设计分辨率。但是我们一般在准备资源时,会让其一致,那么久可以省略这一步,但是如果不一样,cocos2d-x也提供了相应的接口。
Director::getInstance()->setContentScaleFactor(2.0);
我们可以设置图片的缩放银子,这个设置之后,就相当于将我们的图片资源缩小了4倍。因为这个的算法是(资源)/(设计分辨率)。
2.第二部分,就是从设计分辨率到设备分辨率。我们刚开始说我们将我们这么的设计的游戏,放在设备分辨率等于设计分辨率的手机上,我们的游戏将完美展示,但是,当放在手机分辨率不等于我们设备分辨率的手机上,那么它会怎么显示呢?
其实,设计分辨率的单位是点,而屏幕分辨率是像素。cocos2dx就是为了让我们的程序,可以不用直接关注手机分辨率,而提出了设计分辨率这样的一个概念。在最后绘制的时候,我们设计分辨率的一个点,可能对应好几个像素。
在代码上,我们的屏幕适配就只有下面这点代码:
GLView* gl = Director::getInstance()->getOpenGLView();gl->setDesignResolutionSize(800, 400, ResolutionPolicy::FIXED_HEIGHT);
这里的三个参数分别是:设计分辨率的宽,设计分辨率的高,和适配策略。适配策略是cocos2d-x已经给我们写好的,现在有5种。
策略1:SHOW_ALL
根据屏幕的宽高与设计分辨率的宽高分别计算缩放因子,然后取较小的作为缩放因子。保证了设计区域全部显示到屏幕上,但是屏幕上可能有黑边。
策略2:NO_BORDER
根据屏幕的宽高与设计分辨率的宽高分别计算缩放因子,然后取较大的作为缩放因子。保证了设计区域在一个方向上铺满,而另一个方向一般会超出屏幕区域。
策略3:EXACT_FIT
根据屏幕的宽与设计分辨率的宽作为x方向上的缩放因子,根据屏幕的高与设计分辨率的高作为y方向上的缩放因子,保证了屏幕完全铺满,但是可能会出现图像的拉伸。
策略4:FIXED_HEIGHT
根据屏幕的的宽高比,保证设计分辨率的高不变,修改设计分辨率的宽。
就是根据屏幕的宽高比,来调整设计分辨率的宽高比,使其一直,在此过程中,不对高做调整。
例如:资源分辨率800*400->设计分辨率800*400->设备分辨率480*320。
首先,我们求出其设备分辨率的宽高比。
480/320 = 1.5。
其次,我们保持设计分辨率的高不变,调整宽,使其比例一致。
400*1.5 = 600。
我们的设计分辨率为800*400,然而我们计算得出这个策略使用后只需要600*400的分辨率,那么宽多出了200,则图片在x方向上有部分被截取了,且铺满了屏幕。
策略5:FIXED_WIDTH
根据屏幕分辨率的宽高比,保证设计分辨率的宽不变,修正设计分辨率的高。
同样使用上面那个例子:
首先,求出设备分辨率的宽高比。
480/320 = 1.5。
其次,我们保持设计分辨率的宽不变,调整高,使其比例一致。
800/1.5 = 533。
那么,可知,设计分辨率的高是400,比533小。那么最后图片在展示时在y方向上会有黑边。
Cocos2d-x之多分辨率屏幕适配相关推荐
- Unity中2D游戏多分辨率屏幕适配方案
一:什么是像素? 像素是由很多个小方格组成,每一个小方格上都存储了位置信息和色彩信息.像素是图像的最小单位 图像分为两类:位图和矢量图 --位图(点阵图):由多个像素组成,当放大时被分为多个色块,而且 ...
- cocos2d 屏幕適配_Cocos2d-x 3.1 一步步做屏幕适配
本文并不想讲关于屏幕适配的概念或者大道理,如果还不了解cocos2d-x屏幕适配的,请先看这篇文章:http://www.cocoachina.com/gamedev/cocos/2014/0516/ ...
- cocos2d 屏幕適配_cocos2d-x 2.x屏幕适配基础
一开始我就忽略了屏幕适配的问题,现在才发现它是多么的重要.通过实践才领悟了其基础概念,而屏幕适配的策略是建立在其上的,有很多,但我还没有认真研究.这里仅把自己对屏幕适配基础知识进行一个梳理. 关于屏幕 ...
- android 屏幕分辨率 屏幕密度,Android屏幕适配——多分辨率多屏幕密度
为什么要适配,适配的好处等等这里就不说了,直接说我们要怎么适配,请看下面的内容. 1.重要概念 px:pixel,像素Android原生API,UI设计计量单位,如获取屏幕宽高. 屏幕分辨率:指在纵向 ...
- cocos2d 屏幕適配_cocos2d-x 屏幕适配新解
转自:http://blog.leafsoar.com/archives/2013/05-10-19.html 为了适应移动终端的各种分辨率大小,各种屏幕宽高比,在 cocos2d-x(当前稳定版:2 ...
- Android 屏幕适配方案(多分辨率适配)
博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此 博主:威威喵 | 博客主页:https://blog.csdn.net/ ...
- Cocos2D-X屏幕适配新解
为了适应移动终端的各种分辨率大小,各种屏幕宽高比,在 Cocos2D-X(当前稳定版:2.0.4) 中,提供了相应的解决方案,以方便我们在设计游戏时,能够更好的适应不同的环境. 而在设计游戏之初,决定 ...
- Android 屏幕适配
一.适配方式之dp 名词解释 分辨率:480*800,1280*720.表示物理屏幕区域内像素点的总和.(切记:跟屏幕适配没有任何关系) 因为我们既可以把1280*720 的分辨率做到4.0 的手机上 ...
- android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配
http://www.tuicool.com/articles/nuyMZb 1 Android手机目前常见的分辨率 1.1 手机常见分辨率: 4:3 VGA 640*480 (Vide ...
最新文章
- serv-u的语言界面的切换(汉英切换)
- 重定位(搜索KERNEL32.DLL得到API地址)
- matlab拟合未定义函数或变量,关于matlab的未定义函数或变量的问题
- 黑马程序员——OC语言基本语法知识(一)
- java 解析gson_使用Java和Google GSON解析ESPN API
- 投射式触摸屏自电容与互电容工作原理基础(未完待续)
- 我的世界血量显示的服务器,Minecraft|世纪之都|服务器mod:拔刀剑 工业2 高级太阳能 血量显示 Nei 聊天泡泡等...
- Garbled Circuits介绍 - 56 Yao协议的实现 总结
- Python计算斗牛游戏的概率
- 苹果笔记本电脑如何清理缓存内存空间?
- ThingWorx公开课圆满结束
- 2011的总结(感谢自己,感恩他人)【转自我的新浪博客】
- 尝试使用sklearn自动进行多模型预测并计算权重
- 卡塔兰数(Catalan Number)--动态规划(Dynamic Programming)
- iOS 创建代码块 并附上常用的代码块(Swift 代码)
- 公众号被处罚后排名下滑
- C语言结构体——位段概念的讲解
- 自动化来袭,程序员是否正在走向另一个泡沫?
- redis1:概述、安装测试、基础知识、5大数据类型
- 柱状图怎么设置xy轴_echarts图表x,y轴的设置