This answer is rendered obsolete by Gregory Johnson Answer
Well, I guess your choices are (Ranked from simplest to complex):
1) Just go into the CCSprite
class in cocos2d
library, and hack it. (<3 open source). (not recommended).
-(void) setOpacity:(GLubyte) anOpacity
{
opacity_ = anOpacity;
// special opacity for premultiplied textures
if( opacityModifyRGB_ )
[self setColor: colorUnmodified_];
[self updateColor];
for (id<CCRGBAProtocol> child in children ) {
// You should check if child responds to selector or conforms to CCRGBAProtocol.
[child setOpacity:opacity];
}
}
2) Same as the solution above, except subclass CCSprite
to MyCCSprite
, and inherit from it instead of CCSprite
. Finally, override setOpacity:
in the new class:
- (void) setOpacity:(GLubyte)opacity
{
[super setOpacity:opacity];
for(id<CCRGBAProtocol> child in children) {
[child setOpacity:opacity];
}
}
3) Run the CCFade
action on the parent and the children by iterating them. (silly, if you ask me).
IMPORTANT: Just please, please, please keep in mind that opacity
is a property of the CCRGBAProtocol
. Not all CCNode
classes have it. So, make sure you keep that in mind.
References:
- http://www.cocos2d-iphone.org/forum/topic/1252