带孩子的CCSprite Fadeout

时间:2012-09-13 15:24:22

标签: objective-c ccsprite

我使用CCSprite和其他几个CCSprite对象作为孩子添加,我使用的其他动画(缩放和旋转)效果很好,孩子们动画太。但是,当我使用CCFadeOut时,它只会淡化父级。

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

2 个答案:

答案 0 :(得分:9)

自Cocos2d ver。 2.1,CCNodeRGBA具有“CascadeOpacity”BOOL属性。在父CCSprite上将其设置为YES以淡出子节点以及父节点。

答案 1 :(得分:7)

Gregory Johnson Answer

将此答案废弃

嗯,我猜你的选择是(从最简单到复杂):

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)与上面的解决方案相同,除了CCSpriteMyCCSprite的子类,并且从它继承而不是CCSprite。最后,在新类中覆盖setOpacity:

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

3)通过迭代对父级运行CCFade操作。 (傻,如果你问我的话)。

重要提示:请随便请注意,opacityCCRGBAProtocol的属性。并非所有CCNode类都有它。因此,请务必牢记这一点。

<强>参考文献:

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