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:
[…]