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

Dav*_*ins 5 iphone objective-c cocos2d-iphone

如何在Cocos2D中创建一个能够随着时间的推移执行"回调"的自定义操作,使每次调用回调的时间比上次调用的时间长(使用类似于Cocos2D已提供的EaseExponentialOut操作).

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

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]];
Run Code Online (Sandbox Code Playgroud)

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

但是,EaseExponentialOut似乎对创建的"重复"操作没有任何影响 - 我原本期望它在'sequence'操作中调整'DelayTime'操作的持续时间,但它不会出现去做这个.

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

Dav*_*ins 2

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

如果我将计时从 0.034 增加到 0.25,那么结果会更接近我希望看到的结果。现在我只需要调整持续时间的值即可使其“恰到好处”。