Запланируйте вставку в NSMutableArray - PullRequest
0 голосов
/ 21 марта 2012

Я работаю над игрой для iOS, и мне нужно запланировать дополнительный объект NSMutableArray, чтобы увидеть мою анимацию.

[monster stopAllActions];
[monster startDeathAction];
[monsterToDelete addObject: lilMonster];

Я прекращаю все действия над объектом-монстром, затем запускаю анимацию смерти, а затем вставляю ее в массив, чтобы удалить его. Дело в том, что я не вижу анимацию, потому что она мгновенно удаляет монстра.

Я пытался запланировать этот addObject, но не могу найти способ сделать это.

Могу ли я получить от вас некоторую помощь? Спасибо:)

Вкратце: я хочу дождаться окончания анимации, чтобы сделать [массив addObject: object];

PS: я не упоминал об этом. Я работаю с Cocos2d

Ответы [ 3 ]

0 голосов
/ 21 марта 2012

Если у вас есть событие в конце анимации, вы можете попытаться зарегистрировать функцию делегата, которая добавляет объект в массив.

Таким образом, объект будет удален сразу после завершения воспроизведения анимации.

0 голосов
/ 23 марта 2012

У вас есть два варианта:

ОПЦИЯ 1: Добавить переменную к монстру, которая в основном скажет, завершено ли его смертельное действие.Установите его в true, если вы хотите удалить его.Вам также нужно будет изменить код, который очищает массив monstersToDelete, чтобы удалять только монстров, у которых завершено действие смерти.

ВАРИАНТ 2: Заставьте монстра вызвать делегата после завершения действия смерти.Что-то вроде:

- (void) startDeathAction : (id) target : (SEL) sel
{
   Action* myCurrentAction = ...// your death action here
   [self runAction:[CCSequenceAction actionWithActions: myCurrentAction,[CCCallFunc actionWithTarget: target selector:sel ]];
}

и в коде, где вы запускаете действие смерти, добавьте

[monster stopAllActions];
[monster startDeathAction: self : @selector(onMonsterDeath)];
...
- (void) onMonsterDeath
{
    [monsterToDelete addObject: lilMonster];
}
0 голосов
/ 21 марта 2012

Мне неясно, как вы выполняете анимацию, но если вы используете один из методов UIView, например:

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

Вы можете использовать блок завершения, чтобы удалить своего монстра.

...