CCSprite淡出儿童(CCSprite Fadeout with children)

2019-06-28 08:25发布

我使用的是CCSprite与其他一些CCSprite添加子对象,其他的动画我使用(缩放和旋转)工作的高度和儿童动画了。 但是,当我使用CCFadeOut ,它只变淡父。

我读过的淡出并不适用于儿童。 有没有什么办法比遍历每一个孩子,并呼吁他们每个人的淡出其他?

Answer 1:

这个答案是过时格雷戈里·约翰逊回答


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

1)刚进入CCSpritecocos2d库,并攻击它。 (<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父行动,并通过迭代他们的孩子。 (傻了,如果你问我)。

重要提示:只是请,请,请记住, opacity为的属性CCRGBAProtocol 。 并非所有的CCNode类有它。 所以,一定要记住这一点。

参考文献:

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


Answer 2:

随着cocos2d的版本的。 2.1,CCNodeRGBA具有 “CascadeOpacity” BOOL属性。 将它设置为YES父CCSprite淡出子节点以及父。



文章来源: CCSprite Fadeout with children