cocos2d-x android适配

来源:互联网 发布:cerave乳液知乎 编辑:程序博客网 时间:2024/04/29 08:19

最近一段时间都在弄cocos2d-x上面的适配问题,

怕自己以后要用了会忘记,所以想随便写写,记录下自己这段时间所收获的知识。

我的目的是同一套图可以适配到不同分辨率的屏幕,

方法主要分为两种:一种是不等比的缩放,一种是等比的缩放。

前者是分别计算出X、Y的比例然后来拉伸,而X、Y的比例很可能不一样,主要的话会引起图片的变形,在某些分辨率可能看起来不太好看。

后者是分别计算出X、Y的比例,取小的比例来同比例拉伸X、Y,这样图片虽然不会变形,但是大多数机型显示的图片不能充满整个屏幕,会留出一定的黑边。

等比缩放方法的实现,cocos2d-x这个引擎已经帮我们封装好了,我们只要在main.cpp里面加入view->create(480, 320);就好了。这时在android上面显示的就是以480*320的大小来缩放的效果,显示在屏幕正中,两边留出了黑边。

不等比缩放方法的实现,不单单要在main.cpp中加入函数,还要去改cocos2d-x的底层代码。

只要改CCEGLView_android.h、CCEGLView_android.cpp、TouchesJni.cpp这三个就行了,它们都在cocos2dx/platform/android/下。

进入CCEGLView_android.cpp可以看出缩放是通过m_fScreenScaleFactor这个参数来实现的,等比缩放的比例都是一样的所以只有一个值,但是要实现不等比缩放就必须要两个变量来表示X、Y的缩放比例,所以添加了m_fScreenScaleFactorW、m_fScreenScaleFactorY分别表示X、Y的缩放比例。

然后在setViewPortInPoints()、setScissorInPoints()中改变对应的比例,这样窗口显示的大小就OK了。

但是窗口显示是对了但是点击还没有处理,所以还要在TouchesJni.cpp中改变touchesBegin()、touchesMove()、touchesEnd()、touchesCancel()中改变获取点击的比例。

原创粉丝点击