我的应用程序使用Cocos2D进行动画和2D渲染,但“游戏大厅”(这不是它是什么,但对于所有意图和目的)都是标准的UIView
/UIKit
代码。当标准UIKit UIView可见时,预加载Cocos2D纹理
我有一个UIViewController
的子类,其主视图在XIB文件中设置为EAGLView
。当我把所有的Cocos加载代码放入viewDidLoad
时,一切都按预期工作,除了Cocos加载所有纹理时有1-2秒的冻结。
我有大约20种纹理,我在运行场景之前预加载到CCSpriteFrameCache
之前 - 所以我的动画立即变得平滑。
我试图将此纹理加载代码移动到我的视图控制器的init
方法 - 但是当我尝试这种方法时,Cocos崩溃,看起来是因为没有OpenGL上下文来处理。
我想要做的是,当显示UIViewController
的主视图(而不是阻塞主线程)时,我想在背景中加载纹理,然后在完成后,在该UIView
和OpenGL EAGLView
。
我知道现在Cocos中有一个addImageAsync:
调用,所以它实际上只是一个“传递屏幕外EAGLView/EAGLContext”的问题,当我准备显示该视图时,它最终可以粘贴到Cocos。
有没有人有对此优雅的解决方案的任何指针?
如果您可以在开始时获得最终上下文,为什么不直接将纹理直接加载到它呢?为什么要创建第二个? – 2011-04-11 03:47:21