做了2年的跨平台,无论是Sencha Touch也好,Qt Quick也好,Cocos2dx也好,屏幕的自适应始终是让人很头疼很恼火的事情。
虽然官方给了多套资源的方法,但是有时候想想,一个小游戏还搞那么多资源确实挺浪费的。
最近在官网找到这样的资料,虽然是JS版本的,经过本人的修改弄成了一个C++版本。并测试过,证实还是可行的。
这里给出官网链接:http://cn.cocos2d-x.org/tutorial/show?id=1434
然后给出我的源码:
//设计的资源宽,高 float designWidth = 480; float designHeight = 320; //设备的宽高 float deviceWidth = glview->getFrameSize().width; float deviceHeight = glview->getFrameSize().height; //设置缩放比例以及x,y轴的实际差 float scale = 1.0f,gapX = 0.0f,gapY = 0.0f; //得到缩放比例 scale = deviceWidth / designWidth; float scaledHeight = designHeight * scale; //得到X,Y轴差 if (scaledHeight <= deviceHeight) { gapY = (deviceHeight - scaledHeight); } else { scale = deviceHeight / designHeight; float scaledWidth = designWidth * scale; if (scaledWidth <= deviceWidth) { gapX = (deviceWidth - scaledWidth); } } //设置分辨率和资源的配置 glview->setDesignResolutionSize(480 + gapX / scale,320 + gapY / scale,ResolutionPolicy::SHOW_ALL);
加入位置如图:
最后别忘了设置窗口的大小,如图