这又是一篇很水的文章~
不过太坑自己了,不得不记录一下。
说起屏幕适配,很简单,就只是用默认提供的方案(Cocos2d-x3.0release版本):
[cce_cpp]
bool AppDelegate::applicationDidFinishLaunching() {
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLView::create("TowerDefence");
director->setOpenGLView(glview);
/* 游戏设计大小 */
glview->setDesignResolutionSize(800, 480, ResolutionPolicy::SHOW_ALL);
}
/* 省略一些代码 */
return true;
}
[/cce_cpp]
看出问题了吗?可能一眼看过去是看不出什么问题了。
但是移植到Android的时候就出问题了,适配失效,和没适配的效果是一样的。
这折腾了我好久,我尝试了换回3.0beta2版本、3.1版本、3.1.1版本,都是这样的问题,而且就仅仅是HelloWorld而已。
昨晚折腾了一晚,今天折腾了大半天。
突然灵光一闪,头脑异常清晰,终于想起来是什么问题了,改成下面这样就可以了:
[cce_cpp]
bool AppDelegate::applicationDidFinishLaunching() {
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLView::create("TowerDefence");
director->setOpenGLView(glview);
}
/* 游戏设计大小 */
glview->setDesignResolutionSize(800, 480, ResolutionPolicy::SHOW_ALL);
/* 省略一些代码 */
return true;
}
[/cce_cpp]
这么一看是不是就清楚了, 不能把setDesignResolutionSize放在if条件里,因为在Android端的时候是不进入if条件的,有另外的地方做了初始化。
好吧,估计全世界就我一个人这么傻乎乎地坑了自己了。
好了,各位轻喷。