cocos2d-x的屏幕适配
2015-12-06 21:29
423 查看
在之前的几个demo和项目中,我总是在寻求一种具有 普遍适应性 的屏幕适配方案,后来一直未能实现。不过,针对不同的项目,可以找到相对最优的屏幕适配方案。
简单的讲,屏幕适配分2个步骤,共10种解决方案(资源分辨率->(2个)设计分辨率->(5个)屏幕分辨率
资源分辨率和屏幕分辨率都比较好理解,对于设计分辨率,我的理解是,把它看作一个中间的临时分辨率就行。
有如下几个比较常用的接口
setDesignResolutionSize() //设计分辨率大小及模式
setContentScaleFactor() //内容缩放因子
setSearchPaths() //资源搜索路径
getFrameSize() //屏幕分辨率
getWinSize() //设计分辨率
getVisibleSize() //设计分辨率可视区域大小
getVisibleOrigin() //设计分辨率可视区域起点
【资源分辨率->(2个)设计分辨率】
这个步骤主要用到接口setContentScaleFactor()和setSearchPaths()
setContentScaleFactor()通过 资源宽、高 比 设计分辨率宽、高 作为因子来缩放资源的大小
假设 有以下参数
资源分辨率 480*700
设计分辨率 && 屏幕分辨率 480*320
原资源图
资源宽 比 设计分辨率宽
资源高 比 设计分辨率高
用高度比作为内容缩放因子,保证了背景资源的垂直方向在设计分辨率范围内的全部显示。
用宽度比作为内容缩放因子,保证了背景资源的水平方向在设计分辨率范围内的全部显示。
【设计分辨率->(5个)屏幕分辨率】
这一步骤主要用到 setDesignResolutionSize() 这个函数,其参数如下
参数
width 设计分辨率宽度。
height 设计分辨率高度
resolutionPolicy 分辨率方案
假设 有以下参数
资源分辨率 480*700
设计分辨率 480*700
屏幕分辨率 480*320
ResolutionPolicy::SHOW_ALL
屏幕宽、高分别和设计分辨率宽、高计算缩放因子,取较(小)者作为宽、高的缩放因子。保证了设计区域全部显示到屏幕上,但可能会有黑边。
ResolutionPolicy::NO_BORDER
屏幕宽、高分别和设计分辨率宽、高计算缩放因子,取较(大)者作为宽、高的缩放因子。保证了设计区域总能一个方向上铺满屏幕,而另一个方向一般会超出屏幕区域。
ResolutionPolicy::EXACT_FIT
屏幕宽 与 设计宽比 作为X方向的缩放因子,屏幕高 与 设计高比 作为Y方向的缩放因子。保证了设计区域完全铺满屏幕,但是可能会出现图像拉伸。
以下2中为cocos2d-x官方推荐
ResolutionPolicy::FIXED_HEIGHT
保持传入的设计分辨率高度不变,根据屏幕分辨率修正设计分辨率的宽度。
适合高方向需要撑满,宽方向可裁减的游戏,结合setContentScaleFactor(RH/DH)使用。
ResolutionPolicy::FIXED_WIDTH
保持传入的设计分辨率宽度不变,根据屏幕分辨率修正设计分辨率的高度。
适合宽方向需要撑满,高方向可裁减的游戏,结合setContentScaleFactor(RW/DW)使用。
以上可自由组合成10中方案,具体如何设定,要根据项目情况来做出合适的选择。
简单的讲,屏幕适配分2个步骤,共10种解决方案(资源分辨率->(2个)设计分辨率->(5个)屏幕分辨率
资源分辨率和屏幕分辨率都比较好理解,对于设计分辨率,我的理解是,把它看作一个中间的临时分辨率就行。
有如下几个比较常用的接口
setDesignResolutionSize() //设计分辨率大小及模式
setContentScaleFactor() //内容缩放因子
setSearchPaths() //资源搜索路径
getFrameSize() //屏幕分辨率
getWinSize() //设计分辨率
getVisibleSize() //设计分辨率可视区域大小
getVisibleOrigin() //设计分辨率可视区域起点
【资源分辨率->(2个)设计分辨率】
这个步骤主要用到接口setContentScaleFactor()和setSearchPaths()
setContentScaleFactor()通过 资源宽、高 比 设计分辨率宽、高 作为因子来缩放资源的大小
假设 有以下参数
资源分辨率 480*700
设计分辨率 && 屏幕分辨率 480*320
原资源图
资源宽 比 设计分辨率宽
资源高 比 设计分辨率高
用高度比作为内容缩放因子,保证了背景资源的垂直方向在设计分辨率范围内的全部显示。
用宽度比作为内容缩放因子,保证了背景资源的水平方向在设计分辨率范围内的全部显示。
【设计分辨率->(5个)屏幕分辨率】
这一步骤主要用到 setDesignResolutionSize() 这个函数,其参数如下
参数
width 设计分辨率宽度。
height 设计分辨率高度
resolutionPolicy 分辨率方案
假设 有以下参数
资源分辨率 480*700
设计分辨率 480*700
屏幕分辨率 480*320
ResolutionPolicy::SHOW_ALL
屏幕宽、高分别和设计分辨率宽、高计算缩放因子,取较(小)者作为宽、高的缩放因子。保证了设计区域全部显示到屏幕上,但可能会有黑边。
ResolutionPolicy::NO_BORDER
屏幕宽、高分别和设计分辨率宽、高计算缩放因子,取较(大)者作为宽、高的缩放因子。保证了设计区域总能一个方向上铺满屏幕,而另一个方向一般会超出屏幕区域。
ResolutionPolicy::EXACT_FIT
屏幕宽 与 设计宽比 作为X方向的缩放因子,屏幕高 与 设计高比 作为Y方向的缩放因子。保证了设计区域完全铺满屏幕,但是可能会出现图像拉伸。
以下2中为cocos2d-x官方推荐
ResolutionPolicy::FIXED_HEIGHT
保持传入的设计分辨率高度不变,根据屏幕分辨率修正设计分辨率的宽度。
适合高方向需要撑满,宽方向可裁减的游戏,结合setContentScaleFactor(RH/DH)使用。
ResolutionPolicy::FIXED_WIDTH
保持传入的设计分辨率宽度不变,根据屏幕分辨率修正设计分辨率的高度。
适合宽方向需要撑满,高方向可裁减的游戏,结合setContentScaleFactor(RW/DW)使用。
以上可自由组合成10中方案,具体如何设定,要根据项目情况来做出合适的选择。
相关文章推荐
- Cocos2d-x中背景音乐和音效使用实例
- Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验
- Cocos2d-x UI开发之CCControlPotentiometer控件类使用实例
- Cocos2d-x UI开发之文本类使用实例
- Cocos2d-x保存用户游戏数据之XML文件是否存在问题判断方法
- Cocos2d-x UI开发之菜单类使用实例
- Cocos2d-x UI开发之CCControlButton控件类实例
- Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系
- Cocos2d-x UI开发之CCControlColourPicker控件类使用实例
- Cocos2d-x学习笔记之CCLayerColor层的使用实例
- Android-屏幕适配需要注意的地方总结
- Cocos2d-x Schedule定时器的使用实例
- Cocos2d-x中使用CCScrollView来实现关卡选择实例
- Cocos2d-x中CCEditBox文本输入框的使用实例
- cocos2d-x学习笔记之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex场景层介绍
- Cocos2d-x UI开发之CCControlSlider控件类使用实例
- Cocos2d-x学习笔记之开发环境搭建
- javascript制作游戏开发碰撞检测的封装代码
- Cocos2d-x学习笔记之Hello World!