2013-10-08 14 views
7

Uso CCGLView in cocos2d2.0 per lavorare con cacao Touch. Ma la mia applicazione si bloccherà quando premo il tasto Home. Verificato l'errore nel metodo SwapBuffers CCGLView:EXC_BAD_ACCESS utilizzando CCGLView quando Home premuto

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

Lo stack è:

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

6- [SwapBuffers CCGlView]

7- [CCDirectorIOS drawScene]

8- [CCDirectorDisplayLi nk mainloop:]

.....

A proposito, faccio mettere in pausa il direttore al metodo delegato:

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

    [[CCDirector sharedDirector] pause]; 
} 

Tutte le idee? Grazie.

+1

Hai controllato '_context' è nullo o no? – Raptor

+0

se il contesto fosse pari a zero il messaggio attualeRenderbuffer non sarebbe stato inviato – LearnCocos2D

+0

Quale versione iOS (target e SDK) stai usando per la compilazione? @ LearnCocos2D: divertente, ho rintracciato il bleed IOAccelResource su quella stessa riga di codice. – YvesLeBorg

risposta

7

mia soluzione

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

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

Se il tuo gioco è ** nascosto da un'altra vista ** quando l'app sta entrando in primo piano (ad esempio la classifica del Game Center, pubblicità), che ha causato alla tua app di mettere in pausa il regista prima che l'app passasse in secondo piano, il tuo codice riprenderebbe il regista prima che la vista più alta venga rimossa. – Raginmari

0

Ho risolto questo problema mettendo in pausa l'animazione in background nel AppDelegate

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

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

Do * not * include il codice come immagine. Aggiungilo come testo. – dandan78

Problemi correlati