Как можно было бы создать пользовательское действие в 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» - я ожидал, что оно отрегулирует продолжительность действия «DelayTime» внутри действия «sequence», но это похоже, не делает этого.
Я также пытался создать свое собственное настраиваемое действие на основе IntervalAction, но с треском провалился.