5

如何在 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]];

上面的代码执行了整个“序列”18 次,然后在最后一个序列结束时执行“播放”回调。

但是,EaseExponentialOut 似乎对创建的“重复”动作没有任何影响——我曾预计它会调整“序列”动作内的“延迟时间”动作的持续时间,但它没有出现去做这个。

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

4

1 回答 1

2

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

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

于 2009-04-17T13:32:47.887 回答