[ActionScript 3.0] 自制简单拾色器

colorBoard为库中绑定的影片剪辑,colorBoard中包含影片剪辑currColor,文本colorText,影片剪辑close;

colorDot为库中绑定的影片剪辑,colorDot中包含影片剪辑dot,border;

  1 package 

  2 {

  3     import fl.motion.Color;

  4     import flash.display.MovieClip;

  5     import flash.display.Sprite;

  6     import flash.events.MouseEvent;

  7     import flash.geom.ColorTransform;

  8 

  9     /**

 10       * ...

 11       * @author Frost.Yen

 12       */

 13     public class ColorPicker extends Sprite

 14     {

 15         private var _colorBoard:MovieClip;

 16         private var _colorArr:Array = [0,0x333333,0x666666,0x999999,0xCCCCCC,0xFFFFFF,0xFF0000,0x00FF00,0x0000FF,0xFFFF00,0x00FFFF,0xFF00FF];

 17         private var _colorW:Number = 10;

 18         private var _prevBorder:MovieClip;

 19         public function ColorPicker()

 20         {

 21             creatColorBoard();

 22         }

 23 

 24         private function creatColorBoard():void

 25         {

 26             _colorBoard = new colorBoard  ;

 27             _colorBoard.x = 150;

 28             _colorBoard.y = 150;

 29             this.addChild(_colorBoard);

 30             for (var i:int = 0; i < 12; i++)

 31             {

 32                 var dot1:colorDot = new colorDot  ;

 33                 dot1.x = 0;

 34                 dot1.y = i * _colorW;

 35                 _colorBoard.addChild(dot1);

 36                 setColorTransform(dot1.dot,_colorArr[i]);

 37                 //trace(_colorArr[i]);

 38                 //trace(_colorArr[i].toString(16));

 39                 dot1.name = String(_colorArr[i]);

 40                 //trace(uint(dot1.name).toString(16), "---");

 41                 dot1.addEventListener(MouseEvent.CLICK,onColorClick);

 42             }

 43             for (var R = 0; R < 6; R++)

 44             {

 45                 for (var G = 0; G < 6; G++)

 46                 {

 47                     for (var B = 0; B < 6; B++)

 48                     {

 49                         var dot2:colorDot = new colorDot  ;

 50                         dot2.x = B * _colorW + R % 3 * 6 * _colorW + _colorW;

 51                         dot2.y = G * _colorW + Math.floor((R / 3)) * 6 * _colorW;

 52                         _colorBoard.addChild(dot2);

 53                         var color:uint = setRGB((0x33 * R),0x33 * B,0x33 * G);

 54                         setColorTransform(dot2.dot,color);

 55                         dot2.name = String(color);

 56                         dot2.addEventListener(MouseEvent.CLICK,onColorClick);

 57                     }

 58                 }

 59             }

 60             _prevBorder = _colorBoard.getChildByName("0") as MovieClip.border as MovieClip;

 61             _colorBoard.colorText.text = "#" + "000000";

 62             setColorTransform(_prevBorder,0xffffff);

 63             setColorTransform(_colorBoard.currColor,0x000000);

 64             _colorBoard.getChildByName("0").parent as MovieClip.setChildIndex(_colorBoard.getChildByName("0") as MovieClip,_colorBoard.getChildByName("0") as MovieClip.parent.numChildren - 1);

 65             _colorBoard.close.addEventListener(MouseEvent.CLICK,onCloseColorPicker);

 66         }

 67 

 68         private function onColorClick(e:MouseEvent):void

 69         {

 70 

 71 

 72             var color:String = uint(e.currentTarget.name).toString(16);

 73             color = color.length == 2 ? "0000" + color:color.length == 4 ? ("00" + color):color.length == 1 ? ("00000" + color):color;

 74             //trace(color,"+++");

 75             _colorBoard.colorText.text = "#" + color;

 76             setColorTransform(_colorBoard.currColor,uint(("0x" + color)));

 77             setColorTransform(e.currentTarget.border,0xffffff);

 78             setColorTransform(_prevBorder,0x000000);

 79             _prevBorder = e.currentTarget.border as MovieClip;

 80             e.currentTarget.parent as MovieClip.setChildIndex(e.currentTarget as MovieClip,e.currentTarget.parent.numChildren - 1);

 81         }

 82         /**

 83            * 改变影片剪辑颜色值

 84            * @param mc

 85            * @param color

 86            */

 87         private function setColorTransform(mc:MovieClip,color:uint):void

 88         {

 89             var ct:ColorTransform = new ColorTransform  ;

 90             ct.color = color;

 91             mc.transform.colorTransform = ct;

 92         }

 93         /**

 94            * 设置RGB

 95            * @param r

 96            * @param g

 97            * @param b

 98            * @return

 99            */

100         private function setRGB(r:Number,g:Number,b:Number):Number

101         {

102             return r << 16 | g << 8 | b;

103         }

104 

105         private function onCloseColorPicker(e:MouseEvent):void

106         {

107             trace("close");

108         }

109     }

110 

111 }

 

你可能感兴趣的:(actionscript)