欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

cocos2d Loading的处理  

程序员文章站 2022-05-24 08:18:11
...
(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://*.com/questions/1133123/multi-threaded-opengl-programming-in-cocos2d-iphone