@@ -46,11 +46,17 @@ var dirtyFlags = cc.Node._dirtyFlags = {
4646} ;
4747
4848var ONE_DEGREE = Math . PI / 180 ;
49- var stack = new Array ( 50 ) ;
5049
5150function transformChildTree ( root ) {
5251 var index = 1 ;
5352 var children , child , curr , parentCmd , i , len ;
53+ var stack = cc . Node . _performStacks [ cc . Node . _performing ] ;
54+ if ( ! stack ) {
55+ stack = [ ] ;
56+ cc . Node . _performStacks . push ( stack ) ;
57+ }
58+ stack . length = 0 ;
59+ cc . Node . _performing ++ ;
5460 stack [ 0 ] = root ;
5561 while ( index ) {
5662 index -- ;
@@ -79,6 +85,7 @@ function transformChildTree(root) {
7985 }
8086 }
8187 }
88+ cc . Node . _performing -- ;
8289}
8390
8491//-------------------------Base -------------------------
@@ -317,9 +324,6 @@ cc.Node.RenderCmd.prototype = {
317324
318325 visit : function ( parentCmd ) {
319326 var node = this . _node , renderer = cc . renderer ;
320- // quick return if not visible
321- if ( ! node . _visible )
322- return ;
323327
324328 parentCmd = parentCmd || this . getParentRenderCmd ( ) ;
325329 if ( parentCmd )
@@ -331,7 +335,6 @@ cc.Node.RenderCmd.prototype = {
331335 }
332336
333337 this . _syncStatus ( parentCmd ) ;
334- this . visitChildren ( ) ;
335338 } ,
336339
337340 _updateDisplayColor : function ( parentColor ) {
@@ -436,7 +439,8 @@ cc.Node.RenderCmd.prototype = {
436439 this . _displayedOpacity = node . _realOpacity * parentOpacity / 255.0 ;
437440 } ,
438441
439- _updateColor : function ( ) { } ,
442+ _updateColor : function ( ) {
443+ } ,
440444
441445 updateStatus : function ( ) {
442446 var locFlag = this . _dirtyFlag ;
@@ -470,7 +474,7 @@ cc.Node.RenderCmd.prototype = {
470474 _syncStatus : function ( parentCmd ) {
471475 // In the visit logic does not restore the _dirtyFlag
472476 // Because child elements need parent's _dirtyFlag to change himself
473- var locFlag = this . _dirtyFlag , parentNode = null ;
477+ var locFlag = this . _dirtyFlag , parentNode = parentCmd ? parentCmd . _node : null ;
474478
475479 // There is a possibility:
476480 // The parent element changed color, child element not change
@@ -509,39 +513,11 @@ cc.Node.RenderCmd.prototype = {
509513
510514 if ( locFlag & dirtyFlags . orderDirty )
511515 this . _dirtyFlag &= ~ dirtyFlags . orderDirty ;
512- } ,
513-
514- visitChildren : function ( ) {
515- var renderer = cc . renderer ;
516- var node = this . _node ;
517- var i , children = node . _children , child ;
518- var len = children . length ;
519- if ( len > 0 ) {
520- node . sortAllChildren ( ) ;
521- // draw children zOrder < 0
522- for ( i = 0 ; i < len ; i ++ ) {
523- child = children [ i ] ;
524- if ( child . _localZOrder < 0 ) {
525- child . _renderCmd . visit ( this ) ;
526- }
527- else {
528- break ;
529- }
530- }
531-
532- renderer . pushRenderCommand ( this ) ;
533- for ( ; i < len ; i ++ ) {
534- children [ i ] . _renderCmd . visit ( this ) ;
535- }
536- } else {
537- renderer . pushRenderCommand ( this ) ;
538- }
539- this . _dirtyFlag = 0 ;
540516 }
541517} ;
542518
543- cc . Node . RenderCmd . prototype . originVisit = cc . Node . RenderCmd . prototype . visit ;
544519cc . Node . RenderCmd . prototype . originTransform = cc . Node . RenderCmd . prototype . transform ;
520+ cc . Node . RenderCmd . prototype . originUpdateStatus = cc . Node . RenderCmd . prototype . updateStatus ;
545521cc . Node . RenderCmd . prototype . _originSyncStatus = cc . Node . RenderCmd . prototype . _syncStatus ;
546522
547523//-----------------------Canvas ---------------------------
0 commit comments