I have a CCLabelBMFont which I add as a child to a sprite. But when I run a CCFadeOut action it isn't removed. The sprite gets removed but not the label. Here's the code:
-(void)fadeOutSprite:(CCSprite *)sprite withDuration:(float)duartion{
id fadeOut = [CCFadeOut actionWithDuration:duartion];
[sprite runAction: [CCSequence actions:fadeOut, [CCCallFunc actionWithTarget:self selector:@selector(removeFromParent:)], nil]];
}
-(void)removeFromParent:(CCSprite *)sender{
[self removeChild:sender cleanup:YES];
}
CCSprite *achievementSprite = [CCSprite spriteWithFile:@"achievementSlider.png"];
CCLabelBMFont *achievementLabel = [CCLabelBMFont labelWithString:@"Achievement descp" fntFile:@"pointsTime.fnt"];
//Place the label in the center of the sprite
float Xpos = achievementSprite.contentSize.width * 0.5;
float Ypos = achievementSprite.contentSize.height * 0.5;
achievementLabel.position = ccp(Xpos, Ypos);
[achievementSprite addChild:achievementLabel];
CGSize screenSize = [Helper screenWidthAndHeight];
float achievementSpriteSizeHalved = achievementSprite.contentSize.height * 0.5;
achievementSprite.position = ccp([Helper screenCenter].x, (screenSize.height - achievementSpriteSizeHalved) - 60);
[self addChild:achievementSprite z:9];
[self fadeOutSprite:achievementSprite withDuration:2.3];
But if I comment out [self fadeOutSprite:achievementSprite withDuration:2.3]; and do [self removeChild:sliderSprite cleanup:YES]; instead, it's working (the label gets removed). So it must have to do with the CCFadeOut action.