0

我在 2 个精灵上运行动画,如下所示:

-(void) startFootballAnimation {

CCAnimation* footballAnim = [CCAnimation animationWithFrame:@"Football" frameCount:60 delay:0.005f];
spiral = [CCAnimate actionWithAnimation:footballAnim];
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:spiral];
[self runAction:repeat];
[secondFootball runAction:[[repeat copy] autorelease]];
}

我遇到的问题是,当我调用此方法时:

    - (void) slowAnimation {

[spiral setDuration:[spiral duration] + 0.01];
}

....它只会减慢第一个精灵的动画,而不是第二个。我是否需要对复制的动作做一些不同的事情来让它们对动画的减慢做出反应?

4

1 回答 1

2

在对象上调用 copyrepeat也会复制内部动作。您可以通过查看CCAction.m 中CCRepeatForever的实现来了解这一点。copyWithZone:这很好,因为一个动作只能有一个目标节点。

所以是的,要在上面的评论中回答您的问题,您确实需要为每个精灵创建一个新动作。您可以使用复制方法快速复制您的操作,但您必须slowAnimation单独将更改应用到他们的行为(例如您的东西)。

于 2012-06-12T20:49:53.547 回答