ios - How to stop cocos2d accumulating animation delta -


i have weird situation if app goes background , comes foreground animations accumulated somehow , applied super fast. e.g. ccrotateby catches time app in background , spins sprites fast.

my app delegate has correct application state handling think..

- (void)applicationwillresignactive:(uiapplication *)application {     [[ccdirector shareddirector] pause]; }  - (void)applicationdidbecomeactive:(uiapplication *)application {     [[ccdirector shareddirector] resume];     [[oalaudiosession sharedinstance] forceendinterruption]; }  - (void)applicationdidreceivememorywarning:(uiapplication *)application {     [[ccdirector shareddirector] purgecacheddata]; }  -(void) applicationdidenterbackground:(uiapplication*)application {     [[ccdirector shareddirector] stopanimation]; }  -(void) applicationwillenterforeground:(uiapplication*)application {     [[ccdirector shareddirector] startanimation];     [[oalaudiosession sharedinstance] forceendinterruption]; }  - (void)applicationwillterminate:(uiapplication *)application {     ccdirector *director = [ccdirector shareddirector];      [[director view] removefromsuperview];      [director end]; }  - (void)applicationsignificanttimechange:(uiapplication *)application {     [[ccdirector shareddirector] setnextdeltatimezero:yes]; } 

what causing happen?

its 1 of problem face cocos2d 2.0.

temp_fix: used manual pause animation.

-(void) applicationwillresignactive:(uiapplication *)application {     [[nsnotificationcenter defaultcenter] postnotificationname:@"appenterbackground" object:nil];      if( [navcontroller_ visibleviewcontroller] == director_ )         [director_ pause]; }    //in game layer  -(void)onenter {     [super onenter];     [[nsnotificationcenter defaultcenter] addobserver:self  selector:@selector(appenterbackground:) name:@"appenterbackground" object:nil];  }  -(void)onexit {     [[nsnotificationcenter defaultcenter] removeobserver:self name:@"appenterbackground" object:nil];     [super onexit]; }  -(void)appenterbackground:(nsnotification*)notif {     [self pauseschedulerandactions];      [mhero pauseschedulerandactions];      for(mycoin *coin in mcoinarr)     {        [coin  pauseschedulerandactions];     } } 

similar way can resume.


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -