Как загрузить ccbi файлы с CCBReader в фоновом потоке?
Недавно я использовал CocosBuilder для создания интерфейса игры. Я могу загрузить файлы ccbi в основной поток без каких-либо проблем. Но когда я загружаю его в фоновом потоке. Я получил пустой слой / узел с черным фоном. Так что мой вопрос, как правильно загрузить их в фоновом потоке?
1 ответ
Я нахожу решение. Я могу загрузить файлы 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");
}
});