4

我最近使用 CocosBuilder 构建了一个游戏的界面。我可以在主线程中加载ccbi文件而没有任何问题。但是当我在后台线程中加载它时。我有一个黑色背景的空层/节点。所以我的问题是如何在后台线程中正确加载它们?

4

1 回答 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 回答