Кастом-акция с Cocos2D-iphone - PullRequest
5 голосов
/ 14 апреля 2009

Как можно было бы создать пользовательское действие в 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, но с треском провалился.

1 Ответ

2 голосов
/ 17 апреля 2009

Видимо, приведенный выше код является функциональным, это было только мое использование времени в продолжительности. Также не было необходимости использовать «копию», так как действия можно использовать как есть.

Если бы я увеличил время с 0,034 до чего-то большего по линии 0,25, то результат был бы ближе к тому, что я надеялся увидеть. Теперь мне просто нужно поиграть со значениями длительности, чтобы получить «правильное» значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...