Запуск CCAction в определенное время

#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.