cocos2dx 屏幕自适应
来源:互联网 发布:我的淘宝回收站在哪里 编辑:程序博客网 时间:2024/05/17 10:04
首先要明白,自适应经过两次缩放,一次是通过引擎方法CCEGLView::sharedOpenGLView()->setDesignResolutionSize()来缩放,另一次是游戏里面由开发人员控制的,这也是本文章的讨论终点。
以下讨论的假如以960*640为设计分辨率,且手机屏幕分辨率为1280*720
下图各个矩形表示的意思:
ABCD: 设计分辨率程序缩放后的大小,也就是setDesignResolutionSize(AB,CD, kResolutionNoBorder)
IJKL: 设计分辨率大小,这里为960*640
EFGH:手机屏幕分辨率(1280*720)经过引擎缩放前的尺寸
E1F1G1H1:手机屏幕分辨率1280*720
A1B1C1D1:ABCD经过引擎setDesignResolutionSize()缩放后的大小。
尺寸ABCD —> A1B1C1D1 就是通过setDesignResolutionSize()缩放的, 这个过程不用管,我们要控制的就是怎么从 IJKL—>ABCD.
首先确定要往X还是Y方向缩放,由于1280/960 = 1.33, 720/640 = 1.125,所以是偏宽的,由于手机屏幕内不能不限黑色区域,所以游戏内容要比手机屏幕EFGH大,如图中的ABCD,这个就是目标分辨率,
EF/E1F1 = FG/F1G1 且 E1F1=1280, FG=JK=640, F1G1=720, =>EF=1137.77
又由于
AB/IJ = BC/JK 且AB=EF=1137.77, JK=640, IJ=960 => BC=758.
到此已经算出设计分辨率缩放大小了,setDesignResolutionSize()设置即可。
CCEGLView* pEGLView= CCEGLView::sharedOpenGLView();CCRect screenRect;CCRect viewRect= pEGLView->getViewPortRect();//OpenGL视口大小screenRect.origin= ccpSub(CCPointZero,viewRect.origin);//屏幕的视口原点,就是上图H1点screenRect.size= pEGLView->getFrameSize();//屏幕的视口大小,就是上图矩形E1F1G1H1 float scaleX = 1.0f/pEGLView->getScaleX(); //就是A1B1C1D1->ABCD的缩放比float scaleY = 1.0f/pEGLView->getScaleY(); //同上 screenRect.size.width *= scaleX; //屏幕的画布大小, 就是EFscreenRect.size.height *= scaleY; //就是FGscreenRect.origin = ccpCompMult(screenRect.origin,ccp(scaleX,scaleY));//屏幕的画布原点,就是点H s_screenRect.setRect(screenRect); /* 画布大小 */CCSize worldWinSize = WinEnv::worldWinSize();//画布大小,就是ABCDs_worldRect.setRect(CCRectMake(0.0f,0.0f,worldWinSize.width,worldWinSize.height)); /* 原始窗口 */CCSize originWinSize = ccSize(960, 640);CCPoint originWinOrigin = ccpMult(ccpSub(ccpFromSize(worldWinSize),ccpFromSize(originWinSize)),0.5f);//就是点Ls_originRect.setRect(CCRectMake(originWinOrigin.x,originWinOrigin.y,originWinSize.width,originWinSize.height));
那么在游戏中,如果是窗口模式的话,就把L点当成参考点,如果是全屏模式,就把H点当成参考点。
- cocos2dx屏幕屏幕自适应
- cocos2dx----屏幕自适应
- cocos2dx----屏幕自适应
- cocos2dx UI自适应屏幕
- cocos2dx 屏幕自适应
- cocos2dx—-屏幕自适应
- cocos2dx android 自适应屏幕
- cocos2dx安卓自适应屏幕
- Cocos2dx 自适应屏幕大小设定
- 屏幕自适应
- 屏幕自适应
- 屏幕自适应
- 屏幕自适应
- 自适应屏幕
- 屏幕自适应
- 屏幕自适应
- 屏幕自适应
- 【cocos2dx 3.2】Flappy Bird开发超详细讲解(二)素材准备和屏幕自适应分辨率
- jQuery $(tr) 的选取
- vdsb
- UIViewContriller 视图跳转
- 二叉树路径和问题
- 解决windows图标和程序真正图标不一致的问题。
- cocos2dx 屏幕自适应
- TCP心跳机制
- Android从无知到有知——NO.8
- 二五撒防守打法事故发生的gas
- 判断日期是否能跨月查询
- ios消息推送机制原理与实现
- 什么是本地区关键词/全国性关键词?
- Win8 如何共享网络wifi
- Netty4的ServerBootstrp