我在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];
}
....它只会减慢第一个精灵的动画而不是第二个。我是否需要对复制的动作做一些不同的事情才能让它们对动画的减速做出反应?
答案 0 :(得分:2)
在repeat
对象上调用副本也会复制内部操作。您可以通过查看CCRepeatForever
在CCAction.m中copyWithZone:
的实现来看到这一点。这很好,因为一个动作只能有一个目标节点。
所以,是的,要在上面的评论中回答你的问题,你需要为每个精灵创建一个新的动作。您可以使用复制方法快速复制您的操作,但您必须单独对其行为(例如您的slowAnimation
内容)应用更改。