Cocos2d-x開發---改變父節點顏色、透明度影響子節點
阿新 • • 發佈:2019-02-17
引擎版本為:2.1.4
引擎中諸如CCSprite 設定顏色的時候是使用基類:CCNodeRGBA中的setColor 方法的。該方法的程式碼:
這裡面有一個條件判斷:_cascadeColorEnabled 這個就是用來設定父節點的顏色的值影響子節點的顏色的。這個方法中主要是得到父節點的顏色值,然後在updateDisplayedColor方法中通過遍歷所有的子節點,呼叫其修改顏色的方法來達到效果。 同樣的,在設定透明度方法中,也有類似的效果,通過設定_cascadeOpacityEnabled 屬性來達到需求。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); } }