cocos2d 2.0和UIKit混合编程, Push CCDirector的时候出现黑屏的天坑
症状
使用cocos2d 2.0和UIKit混合编程, 有一块用cocos2d编写的小程序, 将CCDirector push到一个UINavigationController里面. 虽然事先在后台初始化了cocos2d, 但在push的时候, CCDirector还是会显示为黑屏, 并且从右到左运动大概10%的距离后会卡一下, 然后push完成, 再过0.1s左右才会显示出来cocos2d的画面. 如下视频所示.
解决方案
网上对这个问题的讨论很少, 原因不是很清楚, 估计是因为cocos2d和UIKit使用了各自独立的OpenGL Context, 在push的时候, 两个context不一致, 导致cocos2d的buffer没有更新, 因此出现黑屏问题.
cocos2d论坛有一个类似的问题 http://www.cocos2d-iphone.org/forums/topic/cocos2d-2-0-device-ipad1-4-2-1-black-screen/
有一条建议是: Connect the CCGLView via IB and don’t init it via code.
果然, 就是这个问题!
因此, 要使用Interface Builder创建CCGLView, 而不能在代码里手动创建!
效果如下视频.