Вы можете использовать CCSequence для создания списка действий. Первое действие, которое вы делаете, должно быть вашим обычным действием (или последовательностью). Второе действие должно быть действием CCCallFuncND, где вы можете вызвать функцию очистки и передать заданный спрайт.
С макушки головы я бы сделал что-то вроде этого:
CCSprite* mySpriteToCleanup = [CCSprite spriteWithFile:@"mySprite.png"];
[self addChild:mySpriteToCleanup];
// ... do stuff
// start the destroy process
id action1 = [CCIntervalAction actionWithDuration:0]; // the action it sounds like you have written above.
id cleanupAction = [CCCallFuncND actionWithTarget:self selector:@selector(cleanupSprite:) data:mySpriteToCleanup];
id seq = [CCSequence actions:action1, cleanupAction, nil];
[mySpriteToCleanup runAction:seq];
и в функции очистки:
- (void) cleanupSprite:(CCSprite*)inSprite
{
// call your destroy particles here
// remove the sprite
[self removeChild:inSprite cleanup:YES];
}
Вы можете добавить другое действие между этими двумя действиями, а также действиями по уничтожению частиц, вместо вызова этого в функции завершения.