我使用的是CCSprite
与其他一些CCSprite
添加子对象,其他的动画我使用(缩放和旋转)工作的高度和儿童动画了。 但是,当我使用CCFadeOut
,它只变淡父。
我读过的淡出并不适用于儿童。 有没有什么办法比遍历每一个孩子,并呼吁他们每个人的淡出其他?
我使用的是CCSprite
与其他一些CCSprite
添加子对象,其他的动画我使用(缩放和旋转)工作的高度和儿童动画了。 但是,当我使用CCFadeOut
,它只变淡父。
我读过的淡出并不适用于儿童。 有没有什么办法比遍历每一个孩子,并呼吁他们每个人的淡出其他?
这个答案是过时格雷戈里·约翰逊回答
嗯,我猜你的选择是(排名从简单到复杂):
1)刚进入CCSprite
类cocos2d
库,并攻击它。 (<3开源)。 ( 不推荐 )。
-(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)与上述相同的溶液,除了子类CCSprite
到MyCCSprite
,并从它,而不是继承CCSprite
。 最后,覆盖setOpacity:
在新的类:
- (void) setOpacity:(GLubyte)opacity
{
[super setOpacity:opacity];
for(id<CCRGBAProtocol> child in children) {
[child setOpacity:opacity];
}
}
3)运行CCFade
父行动,并通过迭代他们的孩子。 (傻了,如果你问我)。
重要提示:只是请,请,请记住, opacity
为的属性CCRGBAProtocol
。 并非所有的CCNode
类有它。 所以,一定要记住这一点。
参考文献:
随着cocos2d的版本的。 2.1,CCNodeRGBA具有 “CascadeOpacity” BOOL属性。 将它设置为YES父CCSprite淡出子节点以及父。