Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 用于加载cocos2d场景的白色屏幕_Iphone_Cocos2d Iphone - Fatal编程技术网

Iphone 用于加载cocos2d场景的白色屏幕

Iphone 用于加载cocos2d场景的白色屏幕,iphone,cocos2d-iphone,Iphone,Cocos2d Iphone,我是cocos 2d游戏开发新手,正在开发一款需要多次从view controller重新加载场景的游戏。为此,我删除了场景并再次运行。在加载场景2次或更多次后,出现了白屏,并且在控制台中显示错误“OpenGL错误0x0506 in-[EAGLView swapBuffers]” 下面是我添加场景的代码- if ([[CCDirector sharedDirector] runningScene] == NULL) { if( ! [

我是cocos 2d游戏开发新手,正在开发一款需要多次从view controller重新加载场景的游戏。为此,我删除了场景并再次运行。在加载场景2次或更多次后,出现了白屏,并且在控制台中显示错误“OpenGL错误0x0506 in-[EAGLView swapBuffers]”

下面是我添加场景的代码-

             if ([[CCDirector sharedDirector] runningScene] == NULL) 
             {
    if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
        [CCDirector setDirectorType:kCCDirectorTypeDefault];

    CCDirector *director = [CCDirector sharedDirector];

    glView = [EAGLView viewWithFrame:[window bounds]
                                   pixelFormat:kEAGLColorFormatRGBA8
                                   depthFormat:GL_DEPTH_COMPONENT24_OES
                            preserveBackbuffer:NO
                                    sharegroup:nil
                                 multiSampling:YES
                               numberOfSamples:4];




    [director setOpenGLView:glView];        
    [director setDeviceOrientation:kCCDeviceOrientationPortrait];   
    [director setAnimationInterval:1.0/60];
    [window addSubview:glView];     

    [[CCDirector sharedDirector] runWithScene: [HelloWorldLayer node]];
[[CCDirector sharedDirector].openGLView removeFromSuperview];
[[CCDirector sharedDirector] stopAnimation];
[[CCDirector sharedDirector] end];
[[CCDirector sharedDirector] release];
}

和用于删除场景的代码-

             if ([[CCDirector sharedDirector] runningScene] == NULL) 
             {
    if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
        [CCDirector setDirectorType:kCCDirectorTypeDefault];

    CCDirector *director = [CCDirector sharedDirector];

    glView = [EAGLView viewWithFrame:[window bounds]
                                   pixelFormat:kEAGLColorFormatRGBA8
                                   depthFormat:GL_DEPTH_COMPONENT24_OES
                            preserveBackbuffer:NO
                                    sharegroup:nil
                                 multiSampling:YES
                               numberOfSamples:4];




    [director setOpenGLView:glView];        
    [director setDeviceOrientation:kCCDeviceOrientationPortrait];   
    [director setAnimationInterval:1.0/60];
    [window addSubview:glView];     

    [[CCDirector sharedDirector] runWithScene: [HelloWorldLayer node]];
[[CCDirector sharedDirector].openGLView removeFromSuperview];
[[CCDirector sharedDirector] stopAnimation];
[[CCDirector sharedDirector] end];
[[CCDirector sharedDirector] release];
请帮帮我,我不明白问题出在哪里。 谢谢

需要注意两件事:

  • 不要释放CCDirector!您所需要做的就是调用stopAnimation和稍后的startAnimation
  • 不要从超级视图中删除openGLView。相反,只需隐藏它:[CCDirector sharedDirector].openGLView hidden:YES]