请教各位大师,新手代码看的稀里糊涂的,求助。。。

    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview->setDesignResolutionSize(480, 320, ResolutionPolicy::SHOW_ALL);
        glview = GLView::create("My Game");
        director->setOpenGLView(glview);
    }


```

这里,第一次运行 director->getOpenGLView(); 得到glview不为空,我设置DesignResolutionSize不生效,跟踪代码,发现这个问题,所以 这里的 “非空” 判断始终进不去,请问这个大家有遇到吗,还是一个bug啊。
我这里始终第一次能拿到glview的值。求解决。。。。。

能进去就见鬼了。。。if(!glview) ->if(glview)…总感觉怪怪。。。
或者
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLView::create(“My Game”);
glview->setDesignResolutionSize(480, 320, ResolutionPolicy::SHOW_ALL);
director->setOpenGLView(glview);
}

getOpenGLView返回了_openGLView,你可以跟下这个值,不会为空的,我特意来看了下这个函数。楼主可以在第三行开始处打个断点,看下glview的值,然后为空的话贴个图最好了。方便网友们帮忙找答案。

我新建的项目,绝对第一次启动,就断了,mac xcode环境 ,,,
难道我见鬼了吗,这个绝对有问题,希望cocos2d-x的大神们看看。。。。。

没看懂楼主的问题呢。
if(!glview) {
glview->setDesignResolutionSize(480, 320, ResolutionPolicy::SHOW_ALL);
glview = GLView::create(“My Game”);
director->setOpenGLView(glview);
}
这个代码本身就有问题啊,你这里判断glview为null才进入if语句,先不说进不进得去,就是进去了,你用一个null来调用setDesignResolutionSize这个函数你的代码也会崩溃的啊。
我建议你把glview->setDesignResolutionSize(480, 320, ResolutionPolicy::SHOW_ALL);这句话放到if外面去,改为下面的代码:
if(!glview) {
glview = GLView::create(“My Game”);
}

    glview->setDesignResolutionSize(480, 320, ResolutionPolicy::SHOW_ALL);

    director->setOpenGLView(glview);

这样不管glview第一次创建是否成功都可以设置resolution了。

楼主是把顺序放反了。

if(!glview)意思是glview为逻辑假才会进if,也就是要glview==NULL,这当然进不去…:12:

是啊 ,但是第一次启动,不是为空码,就是让他进去啊 。。。

也不是代码位置问题 ,我那个if判断,glview 第一次就不为空,if判断为假,进入到if语句中去 ,不是说进去三行代码顺序,我那只是个测试而已,

进不去尽可能,你得到的值就是NULL。只是Xcode的堆栈显示出错了。你看看你的Xcode项目中的Build Settings 下的 Custom Compiler Flags中Other C Flags的值正常是-O0(或者不填),Cocosdx 2.2.1的生成的项目的值是-O2,会导致堆栈显示的值不相同。不过你想使用【 glview->setDesignResolutionSize(480, 320, ResolutionPolicy::SHOW_ALL); 】要先设置 【CCDirector *pDirector = CCDirector::sharedDirector();
pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());】

glview=director->getOpenGLView();
glview就有内容了,逻辑为真
!glview逻辑为假
if(!glview)=if(false)直接就跳过了不是吗?:12:
你应该把 ! 去掉。。