[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 }

 

posted on 2015-04-23 16:10  晏过留痕  阅读(329)  评论(0编辑  收藏  举报