背景

在学习cocos2dx时,我们在main函数中发现一句代码,

#include "main.h"
#include "AppDelegate.h"
#include "CCEGLView.h"USING_NS_CC;int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR    lpCmdLine,int       nCmdShow)
{UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);// create the application instanceAppDelegate app;CCEGLView* eglView = CCEGLView::sharedOpenGLView();eglView->setViewName("CrazyMario");eglView->setFrameSize(480, 320);return CCApplication::sharedApplication()->run();
}

那就是eglView->setFrameSize(480,320),这句代码设置了窗口的大小,一般说来手机游戏需要全屏显示,所以对于不同分辨率的手机,setFrameSize要求不一样的。这样是不是很崩溃?因为我们代码里很多地方可能也要改,图片大小可能也要改,那怎么办呢?

其实cocos2dx已经为我们做好了这一切

结局方案

这个方案就是调用eglView->setDesignResolutionSize(480, 320, kResolutionShowAll);来告诉cocos2dx,我的程序是按照480,320来设计的,那么setFrameSize如果不是480,320那么cocos2dx会按照比例给我们做适配,不用我们做别的事情。

在超级马里奥这个游戏里,在AppDelegate中已经调用了setDesignResolutionSize函数设置设计大小为480,320

那么在setFrameSize不同的情况下,也不会引起图片比例不合适的情况,只是窗口大小会发生变化而已

在480*320的情况下

在960*640的情况下,只是界面变大了,图片没有任何的不适合

setDesignResolutionSize的参数

第三个参数的取值范围如下:

enum ResolutionPolicy
{// The entire application is visible in the specified area without trying to preserve the original aspect ratio.// Distortion can occur, and the application may appear stretched or compressed.kResolutionExactFit,// The entire application fills the specified area, without distortion but possibly with some cropping,// while maintaining the original aspect ratio of the application.kResolutionNoBorder,// The entire application is visible in the specified area without distortion while maintaining the original// aspect ratio of the application. Borders can appear on two sides of the application.kResolutionShowAll,// The application takes the height of the design resolution size and modifies the width of the internal// canvas so that it fits the aspect ratio of the device// no distortion will occur however you must make sure your application works on different// aspect ratioskResolutionFixedHeight,// The application takes the width of the design resolution size and modifies the height of the internal// canvas so that it fits the aspect ratio of the device// no distortion will occur however you must make sure your application works on different// aspect ratioskResolutionFixedWidth,kResolutionUnKnown,
};

kResolutionExactFit:会靠拉伸来填满屏幕,本例来说背景图会变形来填充屏幕,因为1024:768=1.3, 480:320=1.5,宽高比不同,图片也就无法等比缩放来填满屏幕,只能变形了。
kResolutionNoBorder: 看不到黑边,实际就是宽高等比缩放,但缩放比例取宽比和高比之中大的那一个。
kResolutionShowAll:全部显示,可以理解为保证内容都显示在屏幕之内,实际也是宽高等比缩放,但缩放比例取宽比和高比之中小的那一个。

转载于:https://www.cnblogs.com/new0801/p/6177229.html

cocos2dx进阶学习之屏幕适配相关推荐

  1. cocos2dx基础篇(29)——屏幕适配

    [唠叨] 手机的屏幕大小千差万别,如现在流行的安卓手机屏幕大部分长宽比例为16:9.而iPhone 5S的长宽比例为71:40(接近16:9),也有预测说iPhone 6S的长宽比例也将会是主流的16 ...

  2. cocos2dx进阶学习之场景切换

    背景 在学习马里奥时,我们学习到从菜单场景到游戏场景的切换,代码如下 void CMMenuScene::OnStartCallBack( CCObject *pSender ) {CCDirecto ...

  3. cocos2dx进阶学习之CCTMXLayer

    继承关系 CCTMXLayer -> CCSpriteBatchNode CCTMXLayer是在瓦片地图中,抽象一个层的类,它继承自CCSpriteBatchNode,也就是说它抽象了一批相同 ...

  4. Cocos2d-x屏幕适配

    Cocos2d-x屏幕适配 资源分辨率,设计分辨率,屏幕分辨率 Resources width 以下简写为RW,Resources height 以下简写为RH Design width 以下简写为D ...

  5. 【Android】屏幕适配总结终极方案

    屏幕适配的概念 碎片化既是 Android 的优势和弱点,也是开发者们头疼的问题,同时也为 Android 的全球影响力提供了基础.Android 设备的外形和尺寸各不相同,性能水平和屏幕尺寸也都大不 ...

  6. 2021年最全Android屏幕适配的度量单位px dp(dip) ppi dpi sp pt的区别(最详细,屏幕尺寸,屏幕分辨率,屏幕兼容,屏幕适配)

    0 前言 快乐李同学最新在学习Android屏幕适配相关的知识点,其中涉及到了很多Android屏幕适配相关概念和度量单位,但是快乐李同学掌握的相关知识不牢固,于是决定写出这两篇文章对这方面的知识点做 ...

  7. Cocos2d-x 屏幕适配新解(比较全面比较详细)

    黑米GameDev街区 『 不要让任何事情成为你不去学习的理由!』 -Himi Home About Himi Himi's Book 街区须知 资源/技术群 订阅本站 主页 > Cocos2d ...

  8. cocos2dx 屏幕适配

    别较真,不是真正的屏幕适配,只是让在一套设计下,在各个屏幕分辨率下都能凑合看,也是比较省事快速偷懒的一种办法,只要能接受~~ 不足之处就是吧,和设计分辨率不匹配的屏幕下,会有黑边 修改代码AppDel ...

  9. cocos2d-x屏幕适配原理

    原文地址:http://m.blog.csdn.net/article/details?id=50827766 一.适配简介 如今市面上的手机种类越来越多,分辨率是千变万化的.但是我们做游戏开发,喜欢 ...

  10. Cocos2d-x 屏幕适配新解

    原文链接(http://blog.leafsoar.com/archives/2013/05-10-19.html),作者一叶. 为了适应移动终端的各种分辨率大小,各种屏幕宽高比,在 cocos2d- ...

最新文章

  1. Zbrush制作手榴弹案例讲解学习教程
  2. WordPress自动升级插件时需要填写FTP信息的解决
  3. Elasticsearch - cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)]
  4. Tensorflow实例3: 验证码图片的识别训练,每张图片有4个字母
  5. 时钟切换处理(Verilog)
  6. idea新建xml文件
  7. js把base64串解析成中文_26日大嘴足球:晚场5中3/中2串+1比分,早场(意甲+西甲)2场解析!!...
  8. 【白皮书分享】2020年未来智慧园区白皮书-华为.pdf(附下载链接)
  9. Wireshark网络封包分析软件——过滤表达式
  10. HTML lt input gt 标签,科技常识:使用amp;lt;labelamp;gt;标签修改input[type=checkbox]的样式...
  11. html5学习计划,关于学习计划模板汇编5篇
  12. 如何在 AWS 云中从 Amazon EC2 启动 RHEL 8?
  13. 【华图教育】综合素质
  14. Antlr Tool与antlr runtime的版本一致性问题
  15. ausu f8系列笔记本 各种问题搜集,供购笔记本者参考
  16. PyCharm 的使用(二)
  17. mysql 表情符号_解决mysql存储特殊文字(表情符号)utf8mb4
  18. echarts tree (树图) 实现自定义节点图标 自定义样式 点击节点后线条变色 自适应高度 搜索后节点关键字标红 写的很详细,建议收藏!
  19. Choosing Smartly: Adaptive Multimodal Fusion for Object Detection in Changing Environments论文阅读笔记
  20. 《厚黑学》| 读书三诀

热门文章

  1. with grant option 与with admin option的区别
  2. Keil/MDK(2):STM32堆栈使用情况分析
  3. tomcat 发布到服务器启动不了
  4. 初步了解CUDA(零)
  5. linux系统快捷键使用
  6. Python 安装 lxml 插件
  7. Android 和iOS 比较
  8. hasCode in Java
  9. 分享一套帮助你优化开发web应用的jQuery插件集 - Vanity Toolset
  10. 【面试题】---前端需要掌握的知识点-----更新...