zoukankan      html  css  js  c++  java
  • [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 }
  • 相关阅读:
    「斜杠」 ​​​​​​​​​​​​​​写出我心(一百一十三)
    「心就像一杯水」​​​​​​​​​​​​​写出我心(一百一十二)
    「一切速成都是耍流氓」​​​​​​​​​​​​写出我心(一百一十一)
    「生活方式」​​​​​​​​​​​写出我心(一百一十)
    反人类直觉
    编程语言居然是魔法咒语!
    PyInstaller 打包 python程序成exe
    .NET线程池最大线程数的限制-记一次IIS并发瓶颈
    为何要花费精力琢磨人工意识?
    Coder解压探索===冥想补蓝v.1.0
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4450852.html
Copyright © 2011-2022 走看看