带孩子的CCSprite Fadeout

Tho*_*mas 4 objective-c ccsprite

我正在使用CCSprite带有一些其他CCSprite对象作为孩子添加,我正在使用的其他动画(缩放和旋转)工作得很好,孩子也是动画.但是当我使用时CCFadeOut,它只会淡化父母.

我读过,淡出不适用于孩子们.除了迭代每个孩子并在每个孩子上调用淡出之外,还有什么方法吗?

gdb*_*dbj 9

截至Cocos2d ver.2.1,CCNodeRGBA具有"CascadeOpacity"BOOL属性.在父CCSprite上将其设置为YES以淡出子节点以及父节点.


Maz*_*yod 7

这个答案被Gregory Johnson答案淘汰了


好吧,我想你的选择是(从最简单到复杂):

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];
    }
}
Run Code Online (Sandbox Code Playgroud)

2)与上述相同的溶液,除了子类CCSpriteMyCCSprite,并从它继承的代替CCSprite.最后,setOpacity:在新类中覆盖:

- (void) setOpacity:(GLubyte)opacity
{
    [super setOpacity:opacity];
    for(id<CCRGBAProtocol> child in children) {
        [child setOpacity:opacity];
    }
}
Run Code Online (Sandbox Code Playgroud)

3)通过迭代CCFade对父项子项运行操作.(傻,如果你问我).

重要提示:请随便请注意,这opacity是该物业的财产CCRGBAProtocol.并非所有CCNode课程都有.所以,请务必记住这一点.

参考文献:

  1. http://www.cocos2d-iphone.org/forum/topic/1252