这一直在推动我!我确信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];
答案 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类正在使用的。