Возобновить игру cocos2d - PullRequest
       4

Возобновить игру cocos2d

1 голос
/ 27 августа 2011

Я использовал приведенный ниже код для обработки кнопок паузы и возобновления в моей игре

Для паузы:

-(void)pauseTapped{
...    
    [[SimpleAudioEngine sharedEngine] pauseBackgroundMusic];
    [[CCDirector sharedDirector] pause];
...
}

Для возобновления:

-(void)resumeGame: (id)sender {
...
    [self removeChild:pauseMenu cleanup:YES];

    [[SimpleAudioEngine sharedEngine] resumeBackgroundMusic];
    [[CCDirector sharedDirector] resume];
...
}

Проблема в том, чтоесли использованная пауза при нажатии, то при входе в режим enterBackground (нажмите кнопку «Домой») игра автоматически возобновляется, и меню паузы все еще существует

Любая идея будет отличной

ОБНОВЛЕНИЕ:

Код приложения легенда:

- (void)applicationWillResignActive:(UIApplication *)application {
    [[CCDirector sharedDirector] pause];

}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [[CCDirector sharedDirector] resume];
}

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
    [[CCDirector sharedDirector] purgeCachedData];
}

-(void) applicationDidEnterBackground:(UIApplication*)application {
    [[CCDirector sharedDirector] stopAnimation];
}

-(void) applicationWillEnterForeground:(UIApplication*)application {
    [[CCDirector sharedDirector] startAnimation];
}

- (void)applicationWillTerminate:(UIApplication *)application {
    CCDirector *director = [CCDirector sharedDirector];

    [[director openGLView] removeFromSuperview];

    [viewController release];

    [window release];

    [director end]; 
}

- (void)applicationSignificantTimeChange:(UIApplication *)application {
    [[CCDirector sharedDirector] setNextDeltaTimeZero:YES];
}

- (void)dealloc {
    [[CCDirector sharedDirector] end];
    [window release];
    [super dealloc];
}

Спасибо

1 Ответ

3 голосов
/ 27 августа 2011

Вы должны добавить в делегат приложения свойство, которое будет отслеживать, была ли пауза вызвана нажатием кнопки паузы пользователем или автоматически.

Внутри YourAppDelegate.h:

@property (nonatomic) BOOL userPaused;

И внутриYourAppDelegate.h:

@synthesize userPaused;

Затем в методе паузы вашей сцены добавьте:

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.userPaused = YES;

А в методе возобновления вашей сцены добавьте:

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.userPaused = NO;

СейчасВы можете отредактировать -applicationWillResignActive: метод делегата приложения, чтобы возобновить его, только если для userPaused не задано значение YES.

- (void)applicationDidBecomeActive:(UIApplication *)application {
    if (!self.userPaused) {
        [[CCDirector sharedDirector] resume];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...