一、适配简介

如今市面上的手机种类越来越多,分辨率是千变万化的。但是我们做游戏开发,喜欢自己的游戏可以在各个手机都能合适的运行,那么就需要做多分辨率的适配。

二、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之多分辨率屏幕适配相关推荐

  1. Unity中2D游戏多分辨率屏幕适配方案

    一:什么是像素? 像素是由很多个小方格组成,每一个小方格上都存储了位置信息和色彩信息.像素是图像的最小单位 图像分为两类:位图和矢量图 --位图(点阵图):由多个像素组成,当放大时被分为多个色块,而且 ...

  2. cocos2d 屏幕適配_Cocos2d-x 3.1 一步步做屏幕适配

    本文并不想讲关于屏幕适配的概念或者大道理,如果还不了解cocos2d-x屏幕适配的,请先看这篇文章:http://www.cocoachina.com/gamedev/cocos/2014/0516/ ...

  3. cocos2d 屏幕適配_cocos2d-x 2.x屏幕适配基础

    一开始我就忽略了屏幕适配的问题,现在才发现它是多么的重要.通过实践才领悟了其基础概念,而屏幕适配的策略是建立在其上的,有很多,但我还没有认真研究.这里仅把自己对屏幕适配基础知识进行一个梳理. 关于屏幕 ...

  4. android 屏幕分辨率 屏幕密度,Android屏幕适配——多分辨率多屏幕密度

    为什么要适配,适配的好处等等这里就不说了,直接说我们要怎么适配,请看下面的内容. 1.重要概念 px:pixel,像素Android原生API,UI设计计量单位,如获取屏幕宽高. 屏幕分辨率:指在纵向 ...

  5. cocos2d 屏幕適配_cocos2d-x 屏幕适配新解

    转自:http://blog.leafsoar.com/archives/2013/05-10-19.html 为了适应移动终端的各种分辨率大小,各种屏幕宽高比,在 cocos2d-x(当前稳定版:2 ...

  6. Android 屏幕适配方案(多分辨率适配)

    博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此   博主:威威喵  |  博客主页:https://blog.csdn.net/ ...

  7. Cocos2D-X屏幕适配新解

    为了适应移动终端的各种分辨率大小,各种屏幕宽高比,在 Cocos2D-X(当前稳定版:2.0.4) 中,提供了相应的解决方案,以方便我们在设计游戏时,能够更好的适应不同的环境. 而在设计游戏之初,决定 ...

  8. Android 屏幕适配

    一.适配方式之dp 名词解释 分辨率:480*800,1280*720.表示物理屏幕区域内像素点的总和.(切记:跟屏幕适配没有任何关系) 因为我们既可以把1280*720 的分辨率做到4.0 的手机上 ...

  9. android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配

    http://www.tuicool.com/articles/nuyMZb 1 Android手机目前常见的分辨率  1.1 手机常见分辨率:  4:3  VGA     640*480 (Vide ...

最新文章

  1. serv-u的语言界面的切换(汉英切换)
  2. 重定位(搜索KERNEL32.DLL得到API地址)
  3. matlab拟合未定义函数或变量,关于matlab的未定义函数或变量的问题
  4. 黑马程序员——OC语言基本语法知识(一)
  5. java 解析gson_使用Java和Google GSON解析ESPN API
  6. 投射式触摸屏自电容与互电容工作原理基础(未完待续)
  7. 我的世界血量显示的服务器,Minecraft|世纪之都|服务器mod:拔刀剑 工业2 高级太阳能 血量显示 Nei 聊天泡泡等...
  8. Garbled Circuits介绍 - 56 Yao协议的实现 总结
  9. Python计算斗牛游戏的概率
  10. 苹果笔记本电脑如何清理缓存内存空间?
  11. ThingWorx公开课圆满结束
  12. 2011的总结(感谢自己,感恩他人)【转自我的新浪博客】
  13. 尝试使用sklearn自动进行多模型预测并计算权重
  14. 卡塔兰数(Catalan Number)--动态规划(Dynamic Programming)
  15. iOS 创建代码块 并附上常用的代码块(Swift 代码)
  16. 公众号被处罚后排名下滑
  17. C语言结构体——位段概念的讲解
  18. 自动化来袭,程序员是否正在走向另一个泡沫?
  19. redis1:概述、安装测试、基础知识、5大数据类型
  20. 柱状图怎么设置xy轴_echarts图表x,y轴的设置

热门文章

  1. 销量破千万,革命性硬件是如何炼成的?
  2. oracle execute immediate 单引号嵌套,Oracle EXECUTE IMMEDIATE语句里面的引号处理
  3. H5禁止页面滑动/滚动
  4. 领英工具-领英精灵下载安装步骤
  5. 快手、抖音威胁下,美图秀秀转型影像社交的新故事怎么讲?
  6. UiAutomator常用类之UI手势动作
  7. 服务器 监控信息 怎么看,服务器 监控信息 怎么看
  8. 【制作多媒体演示文稿软件】Focusky教程 | 设置文本背景
  9. 单因子分析和对比分析
  10. 爬虫利器Pyppeteer的介绍和使用 爬取京东商城书籍信息