原文地址:http://m.blog.csdn.net/article/details?id=50827766

一、适配简介

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

二、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");}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

三、cocos2d-x适配策略

cocos2d-x在2.0.4版本开始提出了自己的适配策略。提出了设计分辨率这样的一个概念。
相关概念:
资源分辨率:就是我们的图片分辨率。
设计分辨率:我们将这个游戏放在这个分辨率的设备上,我们的游戏将完美展示。
设备分辨率:我们手机的分辨率。

那么具体的做法是什么呢?
这个适配过程可以分为两个部分。
1.第一个部分,就是资源分辨率到设计分辨率。但是我们一般在准备资源时,会让其一致,那么久可以省略这一步,但是如果不一样,cocos2d-x也提供了相应的接口。

    Director::getInstance()->setContentScaleFactor(2.0);
  • 1

我们可以设置图片的缩放银子,这个设置之后,就相当于将我们的图片资源缩小了4倍。因为这个的算法是(资源)/(设计分辨率)。
2.第二部分,就是从设计分辨率到设备分辨率。我们刚开始说我们将我们这么的设计的游戏,放在设备分辨率等于设计分辨率的手机上,我们的游戏将完美展示,但是,当放在手机分辨率不等于我们设备分辨率的手机上,那么它会怎么显示呢?
其实,设计分辨率的单位是点,而屏幕分辨率是像素。cocos2dx就是为了让我们的程序,可以不用直接关注手机分辨率,而提出了设计分辨率这样的一个概念。在最后绘制的时候,我们设计分辨率的一个点,可能对应好几个像素。

在代码上,我们的屏幕适配就只有下面这点代码:

    GLView* gl  = Director::getInstance()->getOpenGLView();gl->setDesignResolutionSize(800, 400, ResolutionPolicy::FIXED_HEIGHT);
  • 1
  • 2

这里的三个参数分别是:设计分辨率的宽,设计分辨率的高,和适配策略。适配策略是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. cocos2d-x 屏幕适配原理分析

    cocos2d-x作为著名的cocos2d游戏开发框架的C++实现者,最近一年发展迅猛.越来越多的app使用它实现快速多平台部署,从最初的ios,android,win32等到新近的html5,实现移 ...

  2. Android dp方式的屏幕适配-原理(后期补充完整讲解)

    Android dp方式的屏幕适配-原理 传统所说的屏幕适配,其实是针对不同屏幕的UI尺寸适配,即在编写页面时使用了具体的dp.sp值后导致的其他问题. 我之前写过一些相关的文章和工具插件,也收到了很 ...

  3. 移动端屏幕适配原理以及方法讲解

    序言: 今天周日,我正坐在黄埔区图书馆,思索着关于移动端屏幕适配的问题.作为一名年纪轻轻的前端马蓉,不,是码农,移动端屏幕适配的方案的帖子没读过100篇吧,也读过几十篇了.可是今天我又在思考这个问题了 ...

  4. Android用命名含sw的文件夹做屏幕适配原理

    基本概念 说到用命名含sw的文件夹做屏幕适配之前先说以下几个基本概念: 屏幕尺寸 屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米 比如常见的屏幕尺寸有2.4.2.8.3.5.3.7.4 ...

  5. 手机屏幕适配原理及实现

    为什么80%的码农都做不了架构师?>>>    手机屏幕是用户与 App 最直接的交互点  不同的分辨率下用户对我们的 App 具有明显的感观差异,主流分辨率的更新迭代却又完全独立于 ...

  6. Android开发之路:搞懂这几个问题,就掌握了屏幕适配原理

    前言概要: 1,进大公司还是小公司,真的有的选? 2,校招的潜规则 3,校招想进大厂怎么办 4,社招的潜规则 5,社招想进大厂怎么办? 前言 现在Android界的网络请求已经是OkHttp和Retr ...

  7. Android学习屏幕适配技能包

    屏幕适配 序言 相关重要概念 硬件 屏幕尺寸 像素密度ppi 分辨率 软件 密度 像素密度dpi 密度限定符 密度无关像素 比例无关像素 屏幕适配的原因 解决方案 今日头条适配方案 宽高限定符适配方案 ...

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

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

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

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

最新文章

  1. PE格式详细讲解4 - 系统篇04|解密系列
  2. hdu 2680 Choose the best route
  3. Linux source用法(转)
  4. Shell 脚本知识回顾 (五) —— Shell 循环
  5. springboot jpa 创建数据库以及rabbitMQ分模块扫描问题
  6. Blob和Clob的区别和用法
  7. 凯撒密码加密算法python_Python最新暴力破解WiFi,攻破所有密码限制,最强破解!...
  8. 静态块、自由块及构造函数的执行顺序
  9. [转载]windows2003上IIS+PyISAPIe1.1..0部署成功
  10. CentOS开启samba服(附smb.conf手册)
  11. 天律的云端大数据分析挖掘之旅
  12. IntelliJ IDEA 8.1.3 Web开发视频教程
  13. 喜欢《权利的游戏》就一定要看《代码的游戏》
  14. 上下文无关输入与输出java_正则表达式与上下文无关文法
  15. SolidWorks迈迪轴生成器使用注意事项
  16. 认清性能问题,性能问题深入探究----性能之「道」
  17. 南京大学计算机学院英才计划,南京大学以“英才计划”为切入点 向前衔接高中...
  18. CREATE TABLESPACE命令详解
  19. PS打不开php,ps打不开未响应怎么办
  20. 博弈论系列—海盗分金币

热门文章

  1. 微信小程序运用云函数调用新闻类API
  2. Linux-uboot-学习笔记(10):移植三星官方uboot
  3. 2022年最火副业;海外抖音 (TikTok) 搬运视频,一周赚一个月工资。
  4. Kotlin协程-并发处理-基础
  5. 【哈夫曼树】介绍与应用
  6. 美国顶尖大学特别的感恩节传统……
  7. go日志库log/zap/logrus
  8. 浅谈泡妞   文 / 中国鄂霸
  9. 谷歌浏览器本地HTML文件无法打开
  10. scratch接球游戏 电子学会图形化编程scratch等级考试三级真题和答案解析2022年3月