Cocos2D-X学习8:屏幕适配
2016-11-12 17:01
176 查看
在之前的代码中,都是将屏幕尺寸直接设置为640*360,并没有考虑屏幕适配的问题,而实际的游戏开发中,需要进行屏幕适配。
实际上,在Cocos2d-x中已经提供了一套相对完整的解决方案,能够适应移动开发中的各种分辨率大小,以及不同宽高比所带来的碎片化问题。
游戏开发中设备的分辨率和宽高比对游戏兼容性的影响:
1、屏幕大小:将低分辨率的图片放到高分辨率设备上,会出现严重的马赛克,影响观感;将高分辨率图片放到低分辨率设备上,会造成一些设备的性能瓶颈。
2、宽高比:常见的为16:9和4:3两种宽高比,需要通过Cocos2d-x提供的方案来解决宽高比带来的问题。
Cocos2d-x中提供了几种适配方式,分别为EXACT_FIT、SHOW_ALL、FIXED_HEIGHT、FIXED_WIDTH和NO_BORDER。
1、EXACT_FIT
通过对内容进行拉伸并铺满屏幕来实现适配,使画面完整地呈现在屏幕上,因此可以使用具体的数值来安排屏幕内容的摆放,不会因为屏幕尺寸而使内部元素位置出现错乱。但是会造成内容的变形,严重影响到视觉体验。
2、SHOW_ALL
通过牺牲一部分屏幕面积来达到两个目的:解决游戏画面根据屏幕尺寸自动放大缩小的问题;保证了显示区域的宽高比,使得游戏更容易设计。
3、NO_BORDER
在保持宽高比的情况下,通过牺牲一部分可视面积来达到最大可利用屏幕。
4、FIXED_HEIGHT和FIXED_WIDTH
不管是NO_BORDER还是SHOW_ALL都会根据屏幕的宽高比来进行适当的缩放,但在不同宽高比下,可能屏幕宽度与画面宽度相同而高度不同,或两者高度相同而宽度不同。FIXED-HEIGHT就是无论怎么样的宽高比都仅保证屏幕高度与画面高度相同。一般会出现在超级马里奥这种横版游戏中,因为这一类游戏地图一定超过了屏幕宽度,因此由屏幕适配造成的画面的超出对游戏影响不大。相对比就是使用FIXED_WIDTH的竖版游戏,比如打飞机。
FIXED_HEIGHT效果图:
FIXED_WIDTH效果图:
具体使用方法:
在文件AppDelegate.cpp中对applicationDidFinishLaunching方法的重写中增加一句代码:
director->getOpenGLView()->setDesignResolutionSize(640, 480, ResolutionPolicy::SHOW_ALL);SHOW_ALL根据实际情况替换其它方案。
实际上,在Cocos2d-x中已经提供了一套相对完整的解决方案,能够适应移动开发中的各种分辨率大小,以及不同宽高比所带来的碎片化问题。
游戏开发中设备的分辨率和宽高比对游戏兼容性的影响:
1、屏幕大小:将低分辨率的图片放到高分辨率设备上,会出现严重的马赛克,影响观感;将高分辨率图片放到低分辨率设备上,会造成一些设备的性能瓶颈。
2、宽高比:常见的为16:9和4:3两种宽高比,需要通过Cocos2d-x提供的方案来解决宽高比带来的问题。
Cocos2d-x中提供了几种适配方式,分别为EXACT_FIT、SHOW_ALL、FIXED_HEIGHT、FIXED_WIDTH和NO_BORDER。
1、EXACT_FIT
通过对内容进行拉伸并铺满屏幕来实现适配,使画面完整地呈现在屏幕上,因此可以使用具体的数值来安排屏幕内容的摆放,不会因为屏幕尺寸而使内部元素位置出现错乱。但是会造成内容的变形,严重影响到视觉体验。
2、SHOW_ALL
通过牺牲一部分屏幕面积来达到两个目的:解决游戏画面根据屏幕尺寸自动放大缩小的问题;保证了显示区域的宽高比,使得游戏更容易设计。
3、NO_BORDER
在保持宽高比的情况下,通过牺牲一部分可视面积来达到最大可利用屏幕。
4、FIXED_HEIGHT和FIXED_WIDTH
不管是NO_BORDER还是SHOW_ALL都会根据屏幕的宽高比来进行适当的缩放,但在不同宽高比下,可能屏幕宽度与画面宽度相同而高度不同,或两者高度相同而宽度不同。FIXED-HEIGHT就是无论怎么样的宽高比都仅保证屏幕高度与画面高度相同。一般会出现在超级马里奥这种横版游戏中,因为这一类游戏地图一定超过了屏幕宽度,因此由屏幕适配造成的画面的超出对游戏影响不大。相对比就是使用FIXED_WIDTH的竖版游戏,比如打飞机。
FIXED_HEIGHT效果图:
FIXED_WIDTH效果图:
具体使用方法:
在文件AppDelegate.cpp中对applicationDidFinishLaunching方法的重写中增加一句代码:
director->getOpenGLView()->setDesignResolutionSize(640, 480, ResolutionPolicy::SHOW_ALL);SHOW_ALL根据实际情况替换其它方案。
相关文章推荐
- cocos2d-x 3.x学习之屏幕适配
- cocos2d-x学习之屏幕适配问题
- 小羊驼和你一起学习cocos2d-x之二(屏幕匹配、多分辨率解决方案、分辨率适配)
- 从零学习cocos2d-x之一:屏幕适配
- Cocos2d-x 屏幕适配新解
- cocos2d-x学习笔记之图片分辨率适配
- cocos2d-x屏幕适配原理分析
- cocos2d-x屏幕适配 三个参数含义
- cocos2d-x 屏幕适配
- cocos2d-x屏幕适配新解(转)
- Cocos2D-X屏幕适配新解
- Cocos2d-x 屏幕适配
- cocos2d-x屏幕适配原理分析
- 关于屏幕适配的学习(support-screens)
- cocos2d-x屏幕适配
- Cocos2D-X屏幕适配新解-兼容与扩展
- Cocos2d-x 屏幕适配新解
- cocos2d-x屏幕适配原理分析
- cocos2d-x屏幕适配原理分析
- cocos2d-x屏幕适配原理分析