笨木头  2014-06-23 15:08     Cocos2d-x,Cocos2d-x3.0     阅读(10732)     评论(12)
转载请注明,原文地址: http://www.benmutou.com/archives/1206
文章来源:笨木头与游戏开发
这又是一篇很水的文章~

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

 

说起屏幕适配,很简单,就只是用默认提供的方案(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条件的,有另外的地方做了初始化。

 

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

 

好了,各位轻喷。

 
12 条评论
  • 一个脱离了低级趣味的人 2015-12-13 18:50:40

    非常感谢博主,么么哒
    0回复
  • 怪物猎人哥 2015-01-12 14:26:19

    第一眼还真没看出有问题来....
    0回复
    • 博主 糟糕_树叶的mut 2015-01-12 20:32:44

      后来发现蛮多人被这里坑了
      0回复
  • kk 2014-09-08 12:13:13

    同遇到过类似问题
    0回复
    • 博主 糟糕_树叶的mut 2014-09-08 17:58:31

      看来这坑挺厉害的。。。
      0回复
  • 石磊 2014-07-21 16:20:25

    呵呵,感谢楼主分享,同样被坑的路过。。。
    0回复
    • 博主 糟糕_树叶的mut 2014-07-21 18:49:49

  • HouSnK 2014-07-04 20:23:52

    博主会做网站??
    0回复
    • 博主 糟糕_树叶的mut 2014-07-04 22:47:02

      大学的时候做过,现在连css都不会了
      0回复
  • 支持笨木头 2014-07-04 06:17:46

    哈哈
    0回复
  • a 2014-06-23 17:43:09

    轻喷
    0回复
    • 博主 糟糕_树叶的mut 2014-06-23 19:52:13

发表评论
粤ICP备16043700号

本博客基于 BlazorAnt Design Blazor 开发