被自己气死的低级错误,关于屏幕适配

笨木头  2014-06-23 15:08   Cocos2d-x,Cocos2d-x3.0   阅读(5,062)   12条评论

这又是一篇很水的文章~

不过太坑自己了,不得不记录一下。

 

说起屏幕适配,很简单,就只是用默认提供的方案(Cocos2d-x3.0release版本):


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
}

 

看出问题了吗?可能一眼看过去是看不出什么问题了。

但是移植到Android的时候就出问题了,适配失效,和没适配的效果是一样的。

这折腾了我好久,我尝试了换回3.0beta2版本、3.1版本、3.1.1版本,都是这样的问题,而且就仅仅是HelloWorld而已。

昨晚折腾了一晚,今天折腾了大半天。

 

突然灵光一闪,头脑异常清晰,终于想起来是什么问题了,改成下面这样就可以了:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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;
}

 

这么一看是不是就清楚了, 不能把setDesignResolutionSize放在if条件里,因为在Android端的时候是不进入if条件的,有另外的地方做了初始化。

 

好吧,估计全世界就我一个人这么傻乎乎地坑了自己了。

 

好了,各位轻喷。

 

12 评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注