我想要一个“闪烁”的精灵,以便它显示第1帧,比如2秒,然后显示第2帧0.1秒,然后再次显示第1帧2秒,并重复永久。现在我可以使用CCDelayTime对此进行编码并将此逻辑构建为我自己,但如果我能够让CCAnimation处理这个或者有更清洁的方法,那将会非常好。
有没有办法在帧之间创建具有不同延迟的CCAnimation,或者什么是归档目标的最佳/简单方法?
谢谢
索伦
答案 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];