当我这样做:
[gameLayer pauseSchedulerAndActions];
大多数游戏暂停,但正在经历这个动作不停顿纺纱精灵:
[sprite runAction:[CCRepeatForever actionWithAction:[CCRotateBy actionWithDuration:5.0 angle: 360]]];
此外,正在运行的CCAnimations那些精灵不会停止动画:
CCAnimation *theAnim = [CCAnimation animationWithSpriteFrames:theFrames delay:0.1];
CCSprite *theOverlay = [CCSprite spriteWithSpriteFrameName:@"whatever.png"];
self.theAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:theAnim]];
我怎样才能在游戏暂停,这些暂停? 我希望“pauseSchedulerAndActions”暂停行动,但似乎并不如此。
pauseSchedulerAndActions不是递归的,所以它只会影响您在暂停节点上的行动和计划,不是的孩子。
如果你的场景/层很浅,你很可能只是侥幸通过该层的孩子循环和调用(暂停/恢复)每个SchedulerAndActions,否则,如果你有一个更深层次的图形,你可能会想递归调用它。 我写了一个小的考验,而这个工作对我来说:
-(void) pauseSchedulerAndActions: (BOOL) pause forNodeTree:(id)parentNode shouldIncludeParentNode:(BOOL)includeParent
{
if(includeParent)
{
(pause) ? [parentNode pauseSchedulerAndActions] : [parentNode resumeSchedulerAndActions];
}
for( CCNode *cnode in [parentNode children] )
{
(pause) ? [cnode pauseSchedulerAndActions] : [cnode resumeSchedulerAndActions];
if(cnode.children.count > 0)
{
[self pauseSchedulerAndActions:pause forNodeTree:cnode shouldIncludeParentNode:NO]; // on recurse, don't process parent again
}
}
}
所以你的情况,你可以尝试调用此方法并传入你的gameLayer
尝试[[CCDirector sharedDirector] pause];
应该暂停所有动画和动作。