2013-10-08 8 views
7

Ich benutze CCGLView in cocos2d2.0, um mit Kakao Touch zu arbeiten. Aber meine Anwendung wird abstürzen, wenn ich die Home-Taste drücke. Der Fehler ist aufgetreten in CCGLView SwapBuffers Methode:EXC_BAD_ACCESS mit CCGLView wenn Home gedrückt

if(![_context presentRenderbuffer:GL_RENDERBUFFER]) ------- EXC_BAD_ACCESS

Der Stapel wird:

5: EAGLContext_presentRenderbuffer (EAGleContext *, * objc_selectorr, unsigned int)

6- [CCGlView SwapBuffers]

7- [CCDirectorIOS drawScene]

8- [CCDirectorDisplayLi nk MainLoop:]

.....

By the way, ich den Direktor bei Delegatmethode Pause:

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 

    [[CCDirector sharedDirector] pause]; 
} 

Irgendwelche Ideen? Vielen Dank.

+1

Pause haben Sie überprüfen '_context' null ist oder nicht? – Raptor

+0

Wenn der Kontext nicht vorhanden ist, wird die Nachricht "presentRenderbuffer" nicht gesendet. – LearnCocos2D

+0

Welche iOS-Version (Ziel und SDK) verwenden Sie für den Build? @ LearnCocos2D: lustig, ich verfolgt die IOAccelResource bluten, um die gleiche Zeile Code. – YvesLeBorg

Antwort

7

meine Lösung

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    [[CCDirector sharedDirector] pause]; 
    [[CCDirector sharedDirector] stopAnimation]; // Add 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    [[CCDirector sharedDirector] resume]; 
    [[CCDirector sharedDirector] startAnimation]; // Add 
} 
+0

Wenn Ihr Spiel ** durch eine andere Ansicht verdeckt wird **, wenn die App in den Vordergrund tritt (z. B. Game Center-Rangliste, Ankündigung), wodurch die App den Director angehalten hat, bevor die App in den Hintergrund ging, wird der Code fortgesetzt Der Regisseur vor der obersten Ansicht wird entfernt. – Raginmari

0

ich dieses Problem gelöst durch die Animation im Hintergrund in der AppDelegate

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    [_glView stopAnimation]; 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    [_glView startAnimation]; 
} 
+2

* * Code nicht als Bild enthalten. Fügen Sie es stattdessen als Text hinzu. – dandan78

Verwandte Themen