@@ -638,27 +638,30 @@ cc.LayerGradient = cc.LayerColor.extend(/** @lends cc.LayerGradient# */{
638
638
_compressedInterpolation :false ,
639
639
640
640
_drawGradientCanvas :null ,
641
+ _sourceGradientCanvas :null ,
641
642
642
643
_buildGradientCanvas :function ( layerWidth , layerHeight ) {
643
644
layerWidth = layerWidth || this . getContentSize ( ) . width ;
644
645
layerHeight = layerHeight || this . getContentSize ( ) . height ;
645
646
646
- var canvas_colors = document . createElement ( 'canvas' ) ;
647
- canvas_colors . width = 2 ;
648
- canvas_colors . height = 2 ;
647
+ if ( ! this . _sourceGradientCanvas )
648
+ this . _sourceGradientCanvas = document . createElement ( 'canvas' ) ;
649
+ this . _sourceGradientCanvas . width = 2 ;
650
+ this . _sourceGradientCanvas . height = 2 ;
649
651
650
- var context_colors = canvas_colors . getContext ( '2d' ) ;
652
+ var context_colors = this . _sourceGradientCanvas . getContext ( '2d' ) ;
651
653
context_colors . fillStyle = 'rgba(0,0,0,1)' ;
652
654
context_colors . fillRect ( 0 , 0 , 2 , 2 ) ;
653
655
654
656
var image_colors = context_colors . getImageData ( 0 , 0 , 2 , 2 ) ;
655
657
var data = image_colors . data ;
656
658
657
- var canvas_render = document . createElement ( 'canvas' ) ;
658
- canvas_render . width = layerWidth ;
659
- canvas_render . height = layerHeight ;
659
+ if ( ! this . _drawGradientCanvas )
660
+ this . _drawGradientCanvas = document . createElement ( 'canvas' ) ;
661
+ this . _drawGradientCanvas . width = layerWidth ;
662
+ this . _drawGradientCanvas . height = layerHeight ;
660
663
661
- var context_render = canvas_render . getContext ( '2d' ) ;
664
+ var context_render = this . _drawGradientCanvas . getContext ( '2d' ) ;
662
665
context_render . translate ( - layerWidth / 2 , - layerHeight / 2 ) ;
663
666
context_render . scale ( layerWidth , layerHeight ) ;
664
667
@@ -687,8 +690,7 @@ cc.LayerGradient = cc.LayerColor.extend(/** @lends cc.LayerGradient# */{
687
690
data [ 15 ] = 0 | ( this . _squareColors [ 1 ] . a * 255 ) ;
688
691
689
692
context_colors . putImageData ( image_colors , 0 , 0 ) ;
690
- context_render . drawImage ( canvas_colors , 0 , 0 ) ;
691
- return canvas_render ;
693
+ context_render . drawImage ( this . _sourceGradientCanvas , 0 , 0 ) ;
692
694
} ,
693
695
694
696
/**
@@ -701,12 +703,12 @@ cc.LayerGradient = cc.LayerColor.extend(/** @lends cc.LayerGradient# */{
701
703
this . _alongVector = cc . p ( 0 , - 1 ) ;
702
704
this . _super ( ) ;
703
705
704
- this . _drawGradientCanvas = this . _buildGradientCanvas ( ) ;
706
+ this . _buildGradientCanvas ( ) ;
705
707
} ,
706
708
707
709
init :function ( ) {
708
710
this . _super ( ) ;
709
- this . _drawGradientCanvas = this . _buildGradientCanvas ( ) ;
711
+ this . _buildGradientCanvas ( ) ;
710
712
} ,
711
713
712
714
/**
@@ -890,7 +892,7 @@ cc.LayerGradient = cc.LayerColor.extend(/** @lends cc.LayerGradient# */{
890
892
this . _squareColors [ 3 ] . b = ( ( E . b + ( S . b - E . b ) * ( ( c - u . x - u . y ) / ( 2.0 * c ) ) ) ) ;
891
893
this . _squareColors [ 3 ] . a = ( ( E . a + ( S . a - E . a ) * ( ( c - u . x - u . y ) / ( 2.0 * c ) ) ) ) ;
892
894
893
- this . _drawGradientCanvas = this . _buildGradientCanvas ( ) ;
895
+ this . _buildGradientCanvas ( ) ;
894
896
} ,
895
897
896
898
draw :function ( ctx ) {
0 commit comments