应用程序有很多资源加载缓慢

时间:2013-01-08 01:16:19

标签: objective-c ios xcode cocos2d-iphone

我无法理解为什么我的应用程序拥有大量资源需要很长时间才能启动(不加载资源。程序在启动时不会加载很多资源)。

澄清(我这样做是为了确认问题与我的资源包中的资源数量有关):

  1. 我创建了一个新的cocos2d项目。
  2. 然后我从新创建的项目中获取helloWorldLayer并将其放入MY APP中,该APP拥有大量资源(数千个小png)。
  3. 在我的APP appDelegate中,我然后运行了这个图层(场景),而不是它通常会加载的场景(本来就是MainMenu)。输出与cocos2d模板完全相同。 cocos2d default.png后跟“hello world”。
  4. 但是,启动MY APP比cocos2d项目需要更长的时间,并且从default.png加载屏幕更改为实际代码(“Hello World”);
  5. 这是预期的行为吗?为什么会有区别?

1 个答案:

答案 0 :(得分:0)

在cocos2d游戏中使用线程加载。在使用新加载的资源之前,请确保已加载资源特定阈值。 Here is my own question and solved now. cocos2d sdk中有一个线程示例。你也可以参考。

[NSThread detachNewThreadSelector:@selector(loadingThread:) toTarget:self withObject:nil];

-(void)loadingThread:(id)argument
{
    NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
    CCGLView *view = (CCGLView*)[[CCDirector sharedDirector] view];
    EAGLContext *auxGLcontext = [[EAGLContext alloc]
                                 initWithAPI:kEAGLRenderingAPIOpenGLES2
                                 sharegroup:[[view context] sharegroup]];

    if( [EAGLContext setCurrentContext:auxGLcontext] ) {

        [self loadGameResource];

        glFlush(); 

        [EAGLContext setCurrentContext:nil];
    } else {
        CCLOG(@"cocos2d: ERROR: TetureCache: Could not set EAGLContext");
    }

    [auxGLcontext release];

    [autoreleasepool release];
}