CCSprite Fadeout с детьми

Я использую CCSprite с несколькими другими CCSprite объекты, добавленные как дети, другие анимации, которые я использую (масштабирование и вращение), работают отлично, и дети тоже анимированы. Но когда я использую CCFadeOut, это только исчезает родитель.

Я читал, что исчезновение не относится к детям. Есть ли способ, кроме как перебирать каждого ребенка и вызывать постепенное исчезновение для каждого из них?

2 ответа

Решение

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];
    }
}

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 у классов есть это. Итак, убедитесь, что вы имейте это в виду.

Рекомендации:

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

По состоянию на Cocos2d вер. 2.1, CCNodeRGBA имеет свойство BOOL "CascadeOpacity". Установите значение YES на родительском CCSprite, чтобы исчезнуть как дочерние узлы, так и родительский.

Другие вопросы по тегам