#iphone #ios #ipad #cocos2d-iphone
#iPhone #iOS #iPad #cocos2d-iphone
Вопрос:
Я хочу запустить бесконечную CCAction в определенное время. Я пытался использовать CCSequence, но он поддерживает только анимацию с конечным временем.
Есть идеи?
С наилучшими пожеланиями, пункты
Ответ №1:
Поместите действие, которое вы хотите повторить, внутри метода. Затем поместите это в свой метод инициализации
[[CCScheduler sharedScheduler] scheduleSelector:@selector(myMethod) forTarget:self interval:10 paused:NO];
Это вызовет myMethod через 10 секунд, однако, оказавшись внутри myMethod, вы захотите отменить его. Итак, мой метод должен выглядеть примерно так.
- (void) myMethod
{
[[CCScheduler sharedScheduler] unscheduleSelector:@selector(myMethod) forTarget:self];
CCMoveBy *move = [CCMoveBy actionWithDuration:3 position:ccp(75,0)];
CCRepeatForever *repeat = [CCRepeatForever actionWithAction:move];
[mySprite runAction:repeat];
}
Ответ №2:
Последние две строки — это то, что вам нужно.
CCMoveBy* move = [CCMoveBy actionWithDuration:3 position:ccp(75,0)];
CCCallFuncO* shot = [CCCallFuncO actionWithTarget:self selector:@selector(shoot:) object:enemy];
CCSequence* sequ = [CCSequence actions:move,shot,nil];
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:sequ];
[sprite runAction:repeat]; //sprite here
Комментарии:
1. Ну, это не сработает. Позвольте мне попытаться привести пример. Предположим, что есть только 2 действия. 1. Действие задержки (для начала задержки в сцене, которую я хочу дать) 2. Действие перехода (которое я хочу повторить по истечении времени задержки). Если я последую вашему подходу, задержка также повторится. 🙂 Нам нужно подумать о другом решении.
2. @Gabe Этот бесконечный цикл заморозит игру
3. @paras mendiratta мой совет: не используйте действия, просто обновите координаты x и y внутри функции ccTime.