您的位置:首页 > 移动开发 > Cocos引擎

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根据实际情况替换其它方案。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: