1. 程式人生 > >Cocos2d-x開發---改變父節點顏色、透明度影響子節點

Cocos2d-x開發---改變父節點顏色、透明度影響子節點

       引擎版本為:2.1.4        引擎中諸如CCSprite 設定顏色的時候是使用基類:CCNodeRGBA中的setColor 方法的。該方法的程式碼:
void CCNodeRGBA::setColor(const ccColor3B& color)
{
     _displayedColor = _realColor = color;
     if ( _cascadeColorEnabled )
     {
          ccColor3B parentColor = ccWHITE;
          CCRGBAProtocol* parent = dynamic_cast<CCRGBAProtocol*>(m_pParent);
          if( parent && parent->isCascadeColorEnabled() )
          {
               parentColor = parent->getDisplayedColor();
          }
          updateDisplayedColor(parentColor);
     }
}
       這裡面有一個條件判斷:_cascadeColorEnabled 這個就是用來設定父節點的顏色的值影響子節點的顏色的。這個方法中主要是得到父節點的顏色值,然後在updateDisplayedColor方法中通過遍歷所有的子節點,呼叫其修改顏色的方法來達到效果。        同樣的,在設定透明度方法中,也有類似的效果,通過設定_cascadeOpacityEnabled 屬性來達到需求。