cocos2d Loading的处理
程序员文章站
2022-05-24 08:22:17
...
(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
上一篇: 京东白条无法激活是什么原因如何解决