2012-08-17 126 views
0

我有一个动画游戏。在比赛现场,我用下面的方法来暂停我的游戏(它完美的作品,因为比赛暂停时,用户点击了iOS设备的任何一点):在cocos2d中继续游戏循环

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch=[touches anyObject]; 
    CGPoint locationOfTouch=[self convertTouchToNodeSpace: touch]; 

    CGRect rectOfScreen=CGRectMake(0, 0, screenSize.width, screenSize.height); 

if (CGRectContainsPoint(rectOfScreen, locationOfTouch)) 
{ 
    [[CCDirector sharedDirector] replaceScene:[PauseScene scene]]; 
    [self unschedule:@selector(spawnEnemies:)]; 
    [self unschedule:@selector(checkCollisionOfEnemyWithBullet:)]; 
    [self unschedule:@selector(update:)]; 
    [self unschedule:@selector(isJoystickActivated:)]; 
    [self unschedule:@selector(checkHasGameEnded:)]; 

    [[CCDirector sharedDirector] pause]; 
} 

}

为了实现恢复动作,我心中已经创建PauseLayer:CCLayer,在那里我已经实现了下面的方法来恢复比赛:

-(void) continueGame:(id)sender 
{ 
[[CCDirector sharedDirector] resume]; 
[[CCDirector sharedDirector] replaceScene:[GameSceneLayer scene]]; 
//[self resumeSchedulerAndActions]; 
} 

下面是代码,我怎么envoke上述方法:

CCMenuItemFont* continue_game=[CCMenuItemFont itemWithString:@"continue game" target:self selector:@selector(continueGame:)]; 

但是,当我选择继续游戏时,游戏从空白点开始:每个游戏状态,每个游戏角色都将是新的。我如何从用户暂停的初始点恢复我的游戏?谢谢!

回答

0

您可以使用这两个功能cocos2D上暂停和恢复:

[self pauseSchedulerAndActions]; //pause 
[self resumeSchedulerAndActions];//resume 

还能保持一个布尔变量,并检查每当u需要。

bool mISGamePaused; 
+0

我对使用bool变量mIsGamePaused感到困惑。如果我只能使用这些函数,为什么实际上需要这个变量? – 2012-08-19 02:30:10

+0

@TarasMurzenkov,在我的游戏中,我使用了许多单独的课程来解决不同的障碍。所以使用这个布尔变量,我们可以避免执行一些代码,如果游戏s暂停... – Guru 2012-08-19 04:52:29

+0

你可以发布一些代码示例? PS我已经在 - (void)continueGame:(id)发件人中使用了方法[self resumeSchedulerAndActions],但是我的游戏并没有从暂停状态恢复。 – 2012-08-19 08:32:26