В вышеупомянутом случае вы упомянули, что someMethodToBeExecutedWhenAnimationFinishes будет выполнен три раза.Просто используйте его 1 раз после цикла.'yourAnimationDuration' будет временем действия с максимальной продолжительностью, поскольку все другие действия должны быть завершены до того, как действие с максимальной продолжительностью.
'CCSequence' является хорошим вариантом, но вам нужно выполнять CCSequence только с действием смаксимальная продолжительность вместо всех объектов.
Так В 1-м случае
int yourAnimationDuration; //this needs to be set to duration of action with maximum time
for(int idx = 0; idx < 3; idx++) {
[[objArray objectAtIndex:idx] runAction:[actArray objectAtIndex:idx]];
}
[self performSelector:@selector(someMethodToBeExecutedWhenAnimationFinishes) withObject:nil afterDelay:yourAnimationDuration];
Во 2-м случае Предположим, что ваше 2-е действие занимает максимальное время.
int actionNum = 2;
for(int idx = 0; idx < 3; idx++) {
if(idx == (actionNum-1))
{
[[objArray objectAtIndex:idx] runAction:[CCSequence actions:[actArray objectAtIndex:idx],[CCCallFuncN actionWithTarget:self selector:@selector(someMethodToBeExecutedWhenAnimationFinishes:)],nil];
}
else{
[[objArray objectAtIndex:idx] runAction:[actArray objectAtIndex:idx]];
}
}
Надеждачто помогает.Я не запускал этот код.Поэтому проверьте синтаксис, если таковой имеется.:)