cocos2d Loading的处理

阅读更多
(id) init
{
    self = [super init];
    if ( self )
    {   
        // Add the Label (in cocos2D universe)

        BitmapFontAtlas *label = [BitmapFontAtlas 
         bitmapFontAtlasWithString: @"Initializing Game" 
         fntFile: @"comic_atlas.fnt" 
         alignment: UITextAlignmentCenter];

        label.position = ccp(240, 160);

        label.opacity = 0;

        [self addChild: label z: 0 tag: kInitializingLabel];

        // Add the UIActivityIndicatorView (in UIKit universe)

        self.activityIndicatorView = [[[UIActivityIndicatorView alloc] 
          initWithActivityIndicatorStyle: 
          UIActivityIndicatorViewStyleWhiteLarge] autorelease];

        activityIndicatorView.center = ccp(190,240);

        [activityIndicatorView startAnimating];

        [[self battleView] addSubview: activityIndicatorView];

        [self schedule: @selector(loadingInit)];

        // At this point, the cocos2d rendering is fine.
    }
    return self;
}

- (void) loadingInit
{
    [self unschedule: @selector(loadingInit)];

    // Fade in nicely
    BitmapFontAtlas *label = (BitmapFontAtlas*)[self getChildByTag: kInitializingLabel];
    [label runAction: [FadeIn actionWithDuration: .25]];
	
    [self schedule: @selector(loadingStep0) interval: .25];
}

- (void) loadingStep0
{
    [self unschedule: @selector(loadingStep0)];    

    // Add you own code to load texture, sounds etc...

    // The cocos2D thread will be waiting (since it's the same as 
       the main thread) but the UIKit thread will keep running in parallel
    // Can do multiple steps or just one
    [self schedule: @selector(loadingStep1) interval: .5];
}

- (void) loadingStep1
{
    [self unschedule: @selector(loadingStep1)];

    // Add you own code to load texture, sounds etc...
    [self schedule: @selector(loadingDone) interval: .1];
}

- (void) loadingDone
{
    gameIsReady = YES;
    [self.activityIndicatorView removeFromSuperview];

    BitmapFontAtlas *label = (BitmapFontAtlas*)[self getChildByTag: kInitializingLabel];
    [label setString: NSLocalizedString(@"Tap to start!", nil)];
    [label runAction: [RepeatForever actionWithAction:
                       [Sequence actionOne: [EaseInOut actionWithAction: 
                       [MoveTo actionWithDuration: .6 position: ccp(210, 160)] rate: 2] 
                       two: [EaseInOut actionWithAction: 
                       [MoveTo actionWithDuration: .6 position: ccp(270, 160)] rate: 2]
                        ]       
                       ]
     ];
}

- (BOOL)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    if ( gameIsReady )
    {
        [self openGame];
    }
    return kEventHandled;
}


http://stackoverflow.com/questions/1133123/multi-threaded-opengl-programming-in-cocos2d-iphone

你可能感兴趣的:(cocos2d Loading的处理)