cocos2d-x屏幕适配新解

cocos2d-x屏幕适配新解

ID:8808591

大小:417.19 KB

页数:13页

时间:2018-04-08

cocos2d-x屏幕适配新解_第1页
cocos2d-x屏幕适配新解_第2页
cocos2d-x屏幕适配新解_第3页
cocos2d-x屏幕适配新解_第4页
cocos2d-x屏幕适配新解_第5页
资源描述:

《cocos2d-x屏幕适配新解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、为了适应移动终端的各种分辨率大小,各种屏幕宽高比,在Cocos2D-X(当前稳定版:2.0.4)中,提供了相应的解决方案,以方便我们在设计游戏时,能够更好的适应不同的环境。 而在设计游戏之初,决定着我们屏幕适配的因素有哪些?简而言之只有两点:屏幕大小和宽高比。这两个因素是如何影响游戏的呢?   •屏幕大小:从小分辨率 480×320 到 1280×800 分辨率,再到全高清1080p,从手机到平板,还有苹果设备的 Retina屏,这么多不同的分辨率,而且大小差距甚大,不可能做到一套资源走天下,资源往小了设计,在大屏幕会显示模糊

2、,图片往大了设计,在小屏幕设备又太浪费,而且小屏幕的手机硬件资源也会相对的紧缺,所以根据屏幕大小使用不同的资源是有必要的,而Cocos2D-X也帮我们解决了这一点。   •宽高比:什么是宽高比,就是你的屏幕是方的还是长的,靠近方形的分辨率如480×320,比例为3:2,还有960×540的16:9标准宽屏,这也算是两种总极端情况了,如果能在这两种比例情况做好适配基本就可以了,如果比3:2“更方”如 4:3,比 16:9 “更长”,那么不论如何布局,显示效果差距甚大,最好对固定比例优化吧。当在宽高比在一定范围内,可以通过灵活编写

3、程序去适应,而在显示效果上,Cocos2D-X为我们提供了三种模式,这些模式更多的是帮我们解决比例不一的情况而存在的,如果只是屏幕大小(比例一样),那通过简单的放大缩小即可完成。 三种模式 说是三种模式,其实还有一种“无模式”,也就是Cocos2D-X默认的适配方案,现在我们就来认识一下这些模式,并且通过这些模式去认识其中一些概念 FrameSize、WinSize、VisibleSize、VisibleOrigin,以及它们存在的意义,并且最后灵活运行这些概念 创建出一个不属于这些模式而超越这些模式的新适配解决方案,这是最终

4、目的。 kResolutionUnKnown认识FrameSize 这是 Cocos2D-X 编写的默认模式,没有做任何处理,在这种情况下,游戏画面的大小与比例都是不可控的,在程序运行之初,由各个平台入口函数定义画面大小:1.// proj.linux/main.cpp  linux 平台手动指定画面大小 2.CCEGLView* eglView = CCEGLView::sharedOpenGLView(); 3.eglView->setFrameSize(720, 480); 4. 5.// proj.android/jn

5、i/hellocpp/main.cpp android 平台由 jni 调用传入设备分辨率参数 6.void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv*  env, jobject thiz, jint w, jint h) 7.{ 8.    if (!CCDirector::sharedDirector()->getOpenGLView()) 9.    { 10.        CCEGLView *view = CCEGLView::sharedO

6、penGLView(); 11.        view->setFrameSize(w, h); 12. 13.        AppDelegate *pAppDelegate = new AppDelegate(); 14.        CCApplication::sharedApplication()->run(); 1.    } 2.    else 3.    { 4.        // other 5.      ... 6.    } 7.} 在此我们首先认识了 FrameSize 参数,在游戏运行时,

7、我们可以通过CCEGLView::sharedOpenGLView()->getFrameSize();获得此值。如果在手机上运行,那么不同分辨率将会得到不同的值,既然这个值不可控,那么在写游戏中也就没有参考价值了,比如我们写一个精灵的位置距离底部320高度,在480×320分辨率,能看到其在屏幕上方,如果换一台手机分辨率960×540那么只能显示在中间靠上的位置,如果设置精灵位置为距离屏幕上方(高度)320,反之依然,显示效果不一。 此时可行的方案是使用百分比,如精灵位置在屏幕横向距离左边1/3宽度,在1/2正中间处,而类似

8、这样的设置也不用依赖FrameSize的具体数值。而这样的做法,使得内部元素像弹簧一样,随着FrameSize的大小改变而改变,伸缩或者挤压,对于图片资源大小也是完全不可控,如果根据屏幕大小放大缩小,那我们可以考虑用下面要说的模式,在此不推荐使用 Cocos2D-X 的无模式

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。