我最近使用 CocosBuilder 构建了一个游戏的界面。我可以在主线程中加载ccbi文件而没有任何问题。但是当我在后台线程中加载它时。我有一个黑色背景的空层/节点。所以我的问题是如何在后台线程中正确加载它们?
问问题
733 次
1 回答
3
我找到了解决方案。我可以同时加载 ccbi 文件并运行加载动画。不知道是否正确,但它对我有用。这是代码。解决方案在 Cocos2d 多线程测试示例中找到。
//loading animations here
[self pushLoadingAnimation];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
CCGLView *view = (CCGLView*)[[CCDirector sharedDirector] view];
NSAssert(view, @"Do not initialize the TextureCache before the Director");
EAGLContext *auxGLcontext = [[EAGLContext alloc]
initWithAPI:kEAGLRenderingAPIOpenGLES2
sharegroup:[[view context] sharegroup]];
if( [EAGLContext setCurrentContext:auxGLcontext] ) {
// load the ccbi files here
[self readCCBIfile];
//push the scene in main thread
dispatch_async(dispatch_get_main_queue(), ^{
[[CCDirector sharedDirector] replaceScene:world];
});
glFlush();
[EAGLContext setCurrentContext:nil];
} else {
CCLOG(@"cocos2d: ERROR: TetureCache: Could not set EAGLContext");
}
});
于 2013-09-09T05:33:00.960 回答