使用Cocos2D-iphone进行自定义缓动操作

时间:2009-04-13 23:27:49

标签: objective-c iphone cocos2d-iphone

如何在Cocos2D中创建能够随时间执行“回调”的自定义操作,使每次调用回调的时间比上次调用的时间长(使用类似于已提供的EaseExponentialOut操作的内容)与Cocos2D。

类似的东西:(不起作用)

id sequence = [Sequence actions: [CallFunc actionWithTarget: self selector: @selector(spinTick)], [DelayTime actionWithDuration: 0.034f], nil];
id repeat = [Repeat actionWithAction: [sequence copy]  times: 18];
id ease = [EaseExponentialOut actionWithAction: [repeat copy]];
[ease setDuration:4];

id play = [CallFunc actionWithTarget:self selector:@selector(play)];
[self runAction: [Sequence actions: [ease copy], [play copy], nil]];

上面的代码执行整个'序列',18次,然后在最后一个序列的末尾执行'play'回调。

然而,EaseExponentialOut似乎对创建的'repeat'动作没有任何影响 - 我曾预计它会在'sequence'动作中调整'DelayTime'动作的持续时间,但它似乎没有这样做。

我还尝试基于IntervalAction创建自己的自定义操作,但失败了。

1 个答案:

答案 0 :(得分:2)

显然,上面的代码是有用的,只是我在持续时间中使用了时间。也没有必要使用“复制”,因为这些操作可以按原样使用。

如果我将时间从0.034增加到0.25以上,那么结果就更接近我希望看到的结果。现在我只需要使用持续时间的值来使它'恰到好处'。