2012-12-16 43 views
0

这让我一直在墙上!我确信会有一个UBER简单的答案,但我无法弄清楚它!Cocos2d CCActionManager继续执行所有操作

使用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]; 
} 

我想,当我进入到暂停时,或返回backOrNot是来停止所有的铅笔(其中有很多)。

编辑:

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

[[CCDirector sharedDirector]pause]; 

回答

0

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

暂停所有动作返回的NSMutableSet与暂停操作:

[am resumeTargets:pausedActions]; 
pausedActions = nil; 

请务必使用一个强大的参考为:

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

之后你可以从一组取消暂停这些暂停行动(非ARC:保留)pausedActions和零(非ARC:释放和零)pausedActions后恢复。该设置的内容只有在操作恢复时才有效,如果你保留了设置,操作完成后操作不会释放。

pauseTarget:self会工作,如果你运行[self pauseSchedulerAndActions],这就是CCNode类正在使用的东西。

+0

好答案!我在运行代码时遇到的唯一问题是,当它恢复时,新的操作会启动,但旧对象不会恢复其操作? – chandhooguy

+0

这可能是因为我的代码没有多个对象,只有一个对象被重复地“拍摄”? – chandhooguy

+1

OH ... MY ... GOSH !!!我只知道[[CCDIRECTOR SHAREDDIRECTOR] PAUSE/RESUME]; !!!! @#$%^&*(&^%$#@ !!!!!! – chandhooguy