Set opacity for all child of CCNode

I want to set opacity for all child of CCNode.
Ex: CCNode A, CCNode B is child of A, CCSprite C,D is child of B, CCSprite E is child of A,… I want to call A->setOpacity(opacity), opacity of all sprite C,D,E setted. How can do this? tks

You should inherit CCNode, then override setOpacity(), and add all sprites as its child.

I do it so:

void setOpacity(CCObject* object, GLubyte opaque)
{
    CCArray* childs = NULL;
    CCObject* child = NULL;
    CCNode* nodeObject = (CCNode*)object;
    if (nodeObject) {
        childs = nodeObject->getChildren();
    }
    if (childs) {
        CCARRAY_FOREACH(childs, child){
            CCRGBAProtocol *pRGBAProtocol = dynamic_cast(child);
            if (pRGBAProtocol)
            {
                pRGBAProtocol->setOpacity(opaque);
                // pRGBAProtocol->setColor(ccc3(opaque, opaque, opaque));
            }
            CCNode* singleObject = (CCNode*)child;
            if (singleObject && singleObject->getChildrenCount()>0) {
                setOpacity(singleObject, opaque);
            }
        }
    }
}

Thank you! Calling your codes in one of my CCSprite subclass’ ‘setOpacity’ method, works great!

Vitali Mikrokot wrote:

I do it so:
[…]