0

这一直把我逼到墙上!我确信会有一个 UBER 简单的答案,但我就是想不通!

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

PS,我尝试过 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];
4

1 回答 1

0

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

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

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

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

[am resumeTargets:pausedActions];
pausedActions = nil;

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

pauseTarget:self 将起作用,如果您运行 [self pauseSchedulerAndActions] ,这就是 CCNode 类正在使用的东西,这绝对有效。

于 2012-12-16T21:38:48.980 回答