@@ -70,6 +70,7 @@ cc.Node.RenderCmd = function(renderable){
7070
7171 this . _displayedOpacity = 255 ;
7272 this . _displayedColor = cc . color ( 255 , 255 , 255 , 255 ) ;
73+ this . _displayedColorBoost = 0 ;
7374 this . _cascadeColorEnabledDirty = false ;
7475 this . _cascadeOpacityEnabledDirty = false ;
7576 this . _frame = - 1 ;
@@ -132,20 +133,23 @@ cc.Node.RenderCmd.prototype = {
132133 return null ;
133134 } ,
134135
135- _updateDisplayColor : function ( parentColor ) {
136+ _updateDisplayColor : function ( parentColor , parentBoost ) {
136137 var node = this . _node ;
137138 var locDispColor = this . _displayedColor , locRealColor = node . _realColor ;
139+ parentBoost = parentBoost || 0 ;
138140 var i , len , selChildren , item ;
139141 if ( this . _cascadeColorEnabledDirty && ! node . _cascadeColorEnabled ) {
140142 locDispColor . r = locRealColor . r ;
141143 locDispColor . g = locRealColor . g ;
142144 locDispColor . b = locRealColor . b ;
145+ this . _displayedColorBoost = node . _colorBoost ;
146+
143147 var whiteColor = new _cc . Color ( 255 , 255 , 255 , 255 ) ;
144148 selChildren = node . _children ;
145149 for ( i = 0 , len = selChildren . length ; i < len ; i ++ ) {
146150 item = selChildren [ i ] ;
147151 if ( item && item . _renderCmd )
148- item . _renderCmd . _updateDisplayColor ( whiteColor ) ;
152+ item . _renderCmd . _updateDisplayColor ( whiteColor , 0 ) ;
149153 }
150154 this . _cascadeColorEnabledDirty = false ;
151155 } else {
@@ -159,12 +163,14 @@ cc.Node.RenderCmd.prototype = {
159163 locDispColor . r = 0 | ( locRealColor . r * parentColor . r / 255.0 ) ;
160164 locDispColor . g = 0 | ( locRealColor . g * parentColor . g / 255.0 ) ;
161165 locDispColor . b = 0 | ( locRealColor . b * parentColor . b / 255.0 ) ;
166+ this . _displayedColorBoost = node . _colorBoost + parentBoost ;
167+
162168 if ( node . _cascadeColorEnabled ) {
163169 selChildren = node . _children ;
164170 for ( i = 0 , len = selChildren . length ; i < len ; i ++ ) {
165171 item = selChildren [ i ] ;
166172 if ( item && item . _renderCmd ) {
167- item . _renderCmd . _updateDisplayColor ( locDispColor ) ;
173+ item . _renderCmd . _updateDisplayColor ( locDispColor , this . _displayedColorBoost ) ;
168174 item . _renderCmd . _updateColor ( ) ;
169175 }
170176 }
@@ -207,8 +213,9 @@ cc.Node.RenderCmd.prototype = {
207213 this . _dirtyFlag = this . _dirtyFlag & _cc . Node . _dirtyFlags . opacityDirty ^ this . _dirtyFlag ;
208214 } ,
209215
210- _syncDisplayColor : function ( parentColor ) {
216+ _syncDisplayColor : function ( parentColor , parentBoost ) {
211217 var node = this . _node , locDispColor = this . _displayedColor , locRealColor = node . _realColor ;
218+ parentBoost = parentBoost || 0 ;
212219 if ( parentColor === undefined ) {
213220 var locParent = node . _parent ;
214221 if ( locParent && locParent . _cascadeColorEnabled )
@@ -219,6 +226,7 @@ cc.Node.RenderCmd.prototype = {
219226 locDispColor . r = 0 | ( locRealColor . r * parentColor . r / 255.0 ) ;
220227 locDispColor . g = 0 | ( locRealColor . g * parentColor . g / 255.0 ) ;
221228 locDispColor . b = 0 | ( locRealColor . b * parentColor . b / 255.0 ) ;
229+ this . _displayedColorBoost = node . _colorBoost + parentBoost ;
222230 } ,
223231
224232 _syncDisplayOpacity : function ( parentOpacity ) {
0 commit comments