Как загрузить 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");
    }
});
Другие вопросы по тегам