2013-05-18 2 views
0

у меня есть это:Как приостановить все действия при исчезновении cclayer, а затем возобновить геймплей в cocos2d?

-(void)fadeBackground 
{ 
    ccColor4B color = {0,0,0,255}; 
    CCLayerColor *fadeLayer = [CCLayerColor layerWithColor:color]; 
    [self addChild:fadeLayer z:7]; 
    fadeLayer.opacity = 0; 


    id fade = [CCFadeTo actionWithDuration:1.0f opacity:200];//200 for light blur 
    id calBlk = [CCCallBlock actionWithBlock:^{ 
     //show pause screen buttons here 
     //[self showPauseMenu]; 
    }]; 
    id fadeBack = [CCFadeTo actionWithDuration:2.0f opacity:0]; 

    id sequen = [CCSequence actions:fade, calBlk, fadeBack, nil]; 

    [fadeLayer runAction:sequen]; 

} 

Как остановить действия в то время как FadeIn происходит и возобновить их, когда происходит fadeBack?

ответ

2

[[CCDirector sharedDirector] pause]; & [[CCDirector sharedDirector] resume]; паузу и возобновить планировщики и действия во всех спрайтов/слоев или других Cocos2D узлов.

Если вы хотите приостановить/возобновить конкретную CCLayer вместе с детьми его содержащих,

////for pausing 
[myLayer pauseSchedulerAndActions]; 
for(CCNode *child in myLayer.children){ 
[child pauseSchedulerAndActions]; 
} 

///for resuming 
[myLayer resumeSchedulerAndActions]; 
for(CCNode *child in myLayer.children){ 
[child resumeSchedulerAndActions]; 
} 
1

Чтобы сделать паузу, вы можете использовать этот вызов, необходимо вызвать его для каждого меню в игре.

[self pauseSchedulerAndActions]; 
    [menu pauseSchedulerAndActions]; 

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

[self resumeSchedulerAndActions]; 
    [menu pauseSchedulerAndActions];