2011-11-02 4 views
0

Je sais que Cocos2d 2.0 est en alpha et aura évidemment certains problèmes avec lui. J'essaie de convertir plusieurs projets pour utiliser OpenGL 2.0 pour plusieurs raisons, mais j'ai un problème très étrange. Lorsque je démarre une scène, mes textures se chargent comme je le souhaite et tout fonctionne très bien. J'affiche ensuite des éléments d'interface utilisateur Apple qui me permettent de quitter la scène. La scène et son contrôleur de vue sont désalloués, on dit au réalisateur de terminer, et je reviens à une autre vue. Puis j'appuie sur un UIButton qui relance la scène. La scène recommence et s'exécute, mais aucune texture n'est visible. Les polices se chargent et s'affichent, les charges et les lectures audio, mais aucune texture n'est visible. En déchargeant des informations de CCTextureCache, je peux voir que les textures désirées sont disponibles dans le cache ([[CCTextureCache sharedTextureCache] dumpCachedTextureInfo]). J'ai également essayé d'effacer le cache avant que la scène ne soit relancée. Quoi qu'il en soit, je ne peux pas voir de textures ni ajouter de nœuds à la scène.Les textures ne s'affichent pas - Cocos2D 2.0 Alpha

La réinitialisation de la scène ou la configuration d'EAGLView peut poser problème. Voici le code pour démarrer ladite scène à partir d'un contrôleur de vue:

(void)startGame {

CCDirector *director = [CCDirector sharedDirector]; 
EAGLView *glView = [EAGLView viewWithFrame:[self.view bounds]]; 

[director setOpenGLView:glView]; 

[self setView:glView]; 
[[CCTextureCache sharedTextureCache] removeUnusedTextures]; 
//[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; 
[[CCDirector sharedDirector] runWithScene:[Cocos2DChipmunkScene scene]]; 
} 

Ensuite, la scène est cesser de fumer, et ce qui suit est appelé:

CCDirector *director = [CCDirector sharedDirector];

[[director openGLView] removeFromSuperview];

[director end];

La méthode startGame ci-dessus est appelé à nouveau quand je essayez de recommencer le jeu. C'est le point où aucune texture n'est affichée. Faites-moi savoir si je dois fournir plus de détails sur ce problème.

Répondre

1

Ma recommandation est de ne pas fermer le directeur et maintenir la openGLView dans la hiérarchie, situé juste comme caché: openGLView.hidden = YES;

Vous pouvez démarrer et arrêter cocos2d via [[CCDirector sharedDirector] startAnimation] respectivement stopAnimation.

Questions connexes