Cocos2d CCActionManager恢复所有操作

时间:2012-12-16 21:26:10

标签: iphone xcode cocos2d-iphone

这一直在推动我!我确信UBER会有一个简单的答案,但我无法理解它!

使用CCActionManager,我已成功暂停当前在屏幕上运行的所有操作。我的问题是,如何让它们再次运行?

P.S,我尝试过pauseTarget:self,但是它并没有因为某种原因停止当前正在运行的所有操作?

这是我的代码:

    if (backOrNot == NO) {
Pencil = [CCSprite spriteWithFile:@"Pencil.png"];
Pencil.position = ccp(MainChar.position.x, MainChar.position.y + 10);
id action = [CCMoveTo actionWithDuration:3 position:ccp(Pencil.position.x, 550)];
    [action setTag:4];
[Pencil runAction:action];
[self addChild:Pencil z:2 tag:4];
NSLog(@"Pencil Shot!");
    [[CCActionManager sharedManager] resumeTarget:self];
}
else{
    [[CCActionManager sharedManager] pauseAllRunningActions];
}

当我进入Pause时,或当backOrNot返回YES时,我试图阻止所有Pencils(其中有很多)。

修改

问题很容易解决;我的观点是暂停工作。对于所有想知道的人,你这样做:

[[CCDirector sharedDirector]pause];

1 个答案:

答案 0 :(得分:0)

你是对的,有一个简单的答案! :)

暂停所有操作会返回带有暂停操作的NSMutableSet:

CCActionManager* am = [CCActionManager sharedManager];
NSSet* pausedActions = [am pauseAllRunningActions];

稍后您可以从集合中取消暂停这些暂停的操作:

[am resumeTargets:pausedActions];
pausedActions = nil;

确保在恢复后使用强参考(非ARC:保留)pausedActions和nil(非ARC:release和nil)pausedActions。集合的内容仅在恢复操作之前有效,如果保留集合,则操作在完成后不会解除分配。

pauseTarget:self会工作,如果你运行[self pauseSchedulerAndActions]并且肯定有效,这就是CCNode类正在使用的。