cocos2d 2.0-rc2: Beende den Director und starte neu

Ich habe ein cocos2d-basiertes Spiel, das UIKit-Menüs verwendet. Daher verwende ich nur das Framework für einen Viewcontroller, also das Spiel selbst. Außerdem hat es nur eine Szene. Seit cocos2d 2.0 ist der Regisseur selbst einUIViewController Unterklasse, also schiebe ich es einfach in meineMenuViewController Wenn der Benutzer auf eine Starttaste tippt:

-(void)startGameButtonPressed {

    CCDirectorIOS* director = (CCDirectorIOS *) [CCDirector sharedDirector];


    // Create an CCGLView with a RGB565 color buffer, and a depth buffer of 0-bits
    self.glView = [CCGLView viewWithFrame:CGRectMake(0, 0, 480, 320)
                              pixelFormat:kEAGLColorFormatRGB565    //kEAGLColorFormatRGBA8
                              depthFormat:0 //GL_DEPTH_COMPONENT24_OES
                       preserveBackbuffer:NO
                               sharegroup:nil
                            multiSampling:NO
                          numberOfSamples:0];

    // attach the openglView to the director
    [director setView:glView];
    [director runWithScene:[GameLayer scene]];
    [director setDelegate:(id <CCDirectorDelegate>) [[UIApplication sharedApplication] delegate]];
    [self.navigationController pushViewController:director animated:YES];
}

Dies funktioniert einwandfrei, wenn die Methode zum ersten Mal aufgerufen wird, wenn der Benutzer das erste Spiel startet. Wenn das Spiel vorbei ist, rufe ich an[[CCDirector sharedDirector] end].

Der Großteil des Director-Setups wird in der AppDelegate durchgeführt (es wird unverändert aus der Cocos2d-Standardvorlage übernommen). Ich habe nur dieCCGLView als Vorbehaltsware in meineMenuViewController, denn sonst stürzt die App bei[[CCDirector sharedDirector] end] heißt und dieCCGLView wird nicht beibehalten. Ich denke, das könnte ein Cocos2D-Bug sein. Im[[CCDirector sharedDirector] end] das Framework ruft[self setView:nil]Es wird jedoch weiterhin versucht, später auf die Ansicht zuzugreifen (wahrscheinlich in einem anderen Thread).

Das Problem ist jetzt, dass beim zweiten Aufruf meiner obigen Methode (wenn der Benutzer ein anderes Spiel über das Menü starten möchte),startGameButtonPressedwird der Regisseur gedrückt, aber der Bildschirm bleibt schwarz. Das Spiel läuft und reagiert, ich sehe einfach nichts. Kann mir bitte jemand dabei helfen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage