2012-08-17 81 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