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, 而不能在代碼里手動創建!
效果如下視頻.
浙公網安備 33010602011771號