Question

Je fais un jeu en cocos2d. La scène du jeu a un bouton de menu à reprendre au menu principal qui est un UIViewController. Lorsque l'utilisateur choisit de jouer à nouveau et que la même scène de jeu est appelée pour courir dans le réalisateur, un écran rose apparaît en haut de la scène du jeu.

Cela pourrait être dû au remplacement de la même scène avec lui-même. Donc, je l'ai d'abord remplacé par une scène vide lorsque le menu principal est appelé. La scène de remplacement du code est:

if ([[CCDirector sharedDirector] runningScene] == NULL) {
    [[CCDirector sharedDirector] runWithScene: [MySceneLayer scene]];
}
else {
    [[CCDirector sharedDirector] replaceScene:[MySceneLayer scene]];
}

Il vérifie, s'il n'y a pas de scène en cours d'exécution, commence la scène du jeu pour la première fois. Si une scène est déjà en cours d'exécution, ce qui dans ce cas est une scène vide, le remplace par la scène du jeu. Le Dealloc of Game Scene est également appelé, ce qui signifie que la vieille scène est correctement détruite. Même alors, le remplacement de la scène vide par la scène de jeu donne un écran rose tout en remplaçant par une autre nouvelle scène ne pose aucun problème.

Quelle peut être la raison et quelle est la solution?

Était-ce utile?

La solution

Enfin, le problème a pris et résolu. Tout ce dont il a besoin est un jeu minutieux d'ajout et de suppression des vues. Je supprimais OpenGLView de SuperView lorsque je reviens au menu dans UIViewController. Tout en remplaçant à nouveau la scène, même

[[CCDirector sharedDirector] openGLView] 

qui était utilisé plus tôt, a dû être ajouté à la fenêtre d'application. Le bon endroit et le bon timing l'ont fait.

Toute erreur mineure dans les vues ou les sprites peut vous montrer avec un écran rose :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top