如何在帧之间进行具有不同延迟的CCAnimation

时间:2012-01-26 10:19:39

标签: cocos2d-iphone

我想要一个“闪烁”的精灵,以便它显示第1帧,比如2秒,然后显示第2帧0.1秒,然后再次显示第1帧2秒,并重复永久。现在我可以使用CCDelayTime对此进行编码并将此逻辑构建为我自己,但如果我能够让CCAnimation处理这个或者有更清洁的方法,那将会非常好。

有没有办法在帧之间创建具有不同延迟的CCAnimation,或者什么是归档目标的最佳/简单方法?

谢谢
索伦

2 个答案:

答案 0 :(得分:1)

CCAnimation不支持开箱即用。由于我们只讨论了两个帧,我发现在代码中直接制作动画更容易,就像这样(伪代码):

-(void) updateAnimation:(ccTime)delta
{
  [self unschedule:_cmd];

  if (first frame showing)
  { 
     [sprite setDisplayFrame:second frame];
     [self schedule:_cmd interval:2.0f];
  }
  else
  {
     [sprite setDisplayFrame:first frame];
     [self schedule:_cmd interval:0.1f];
  }
}

这样做的好处是不会一直创建和释放动作。

您还可以尝试使用CCAnimate操作,并在帧更改时不断更改其延迟属性。但我不确定这是否能正常工作。

最后,您可以将CCAnimate子类化为添加延迟数组,每帧一个,并自定义更新方法,以便从延迟数组中获取延迟,而不是使用固定延迟。

答案 1 :(得分:0)

也许您可以使用CCSequence来创建一系列动画;对于每个动画,您可以调整if的持续时间。 您只需创建两个(或更多)动画及其持续时间,然后执行以下操作:

CCSequence *sequence = [CCSequence actions:action1,action2,nil];
[sprite runAction:sequence];