public virtual void visit() { if (!_visible) { return; } updateTransform(); if (_children != null) { sortAllChildren(); int count = _children.Count; int i = 0; // draw children zOrder < 0 for ( ; i < count; i++) { CCNode child = _children[i]; if (child.zOrder < 0) { child.visit(); } else { break; } } // self draw draw(); // draw children zOrder >= 0 for ( ; i < count; i++) { CCNode child = _children[i]; child.visit(); } } else { draw(); } // reset for next frame _orderOfArrival = 0; }