Flash中模拟创建系统颜色样本(颜色拾取器)

这篇博客介绍了如何在Flash AS2.0中模拟创建一个类似Flash内置的颜色样本表格,通过代码实现12行*18列的颜色格子,每个格子大小为10*10,间隔用线填充形成边框。博客详细讲解了颜色对象和颜色变换的设置,并展示了鼠标悬停和点击时的颜色选取功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flash AS2.0/1.0 codes

1、在Falsh中建立一个按钮

2、拷贝以下代码到按钮的on(release)事件中,或者在根时间轴上使用

 

  1. btn_createColorTable.onRelease = function():Void  {
  2.     // 模拟的类似Flash内置的颜色样本表格
  3.     // 颜色样本的表格为12行*18列的表
  4.     // 每个颜色样本的格子大小为10*10,间隔为1。
  5.     // 间隔用line来填充,用来形成表格边框
  6.     var colorCellNum:Number = 0;
  7.     var colorCellX = 0;
  8.     var colorCellY = -1;
  9.     for (var i:Number = 0; i<=5; i++) {
  10.         for (var j:Number = 0; j<=5; j++) {
  11.             for (var k:Number = 0; k<=5; k++) {
  12.                 _root.createEmptyMovieClip("newColorMC"+i+j+k,_root.getNextHighestDepth());
  13.                 colorCellNum++;
  14.                 colorCellY++;
  15.                 with (_root["newColorMC"+i+j+k]) {
  16.                     if (colorCellY == 6) {
  17.                         colorCellY = 0;
  18.                         colorCellX++;
  19.                     }
  20.                     _x = 11*colorCellX;
  21.                     _y = 11*colorCellY;
  22.                     if (colorCellNum>6*18) {
  23.                         _x -= 11*18;
  24.                         _y += 6*11;
  25.                     }
  26.                     beginFill(0x000000);
  27.                     moveTo(0,0);
  28.                     lineTo(10,0);
  29.                     lineTo(10,10);
  30.                     lineTo(0,10);
  31.                     lineTo(0,0);
  32.                     endFill();
  33.                     // Create a color object called my_color for the target _root["newColorMC"+i+j+k]
  34.                     var my_color:Color = new Color(_root["newColorMC"+i+j+k]);
  35.                     // Create a color transform object called myColorTransform using
  36.                     // Set the values for myColorTransform
  37.                     var myColorTransform:Object = {ra:0, rb:51*i, ga:0, gb:51*j, ba:0, bb:51*k, aa:300, ab:300};
  38.                     // Associate the color transform object with the Color object
  39.                     // created for _root["newColorMC"+i+j+k]
  40.                     my_color.setTransform(myColorTransform);
  41.                     _root["newColorMC"+i+j+k].onRollOver = function():Void  {
  42.                         // 这里用来改变鼠标变成吸管光标样式
  43.                     };
  44.                     _root["newColorMC"+i+j+k].onRelease = function():Void  {
  45.                         // 这里获取颜色值,并相应运用
  46.                         _color = new Color(this);
  47.                         with (_root["colorShow"]) {
  48.                             // 用getRGB()函数默认的类型直接传递颜色值
  49.                             // 查看自带帮助推荐使用以下函数,而不使用getRGB()。:(
  50.                             // import flash.geom.ColorTransform;
  51.                             // import flash.geom.Transform;
  52.                             beginFill(_color.getRGB(),100);
  53.                             // 用16进制颜色格式
  54.                             // beginFill("0x"+_color.getRGB().toString(16),100);
  55.                             moveTo(300,300);
  56.                             moveTo(300,300);
  57.                             lineTo(300+100,300+0);
  58.                             lineTo(300+100,300+100);
  59.                             lineTo(300+0,300+100);
  60.                             lineTo(300+0,300+0);
  61.                             endFill();
  62.                         }
  63.                     };
  64.                 }
  65.             }
  66.         }
  67.     }
  68.     // 用黑色线来分隔每个颜色样本格
  69.     lineStyle(1,0x000000,100);
  70.     for (var m:Number = -1; m<12; m++) {
  71.         moveTo(0,10+m*11);
  72.         lineTo(11*18,10+m*11);
  73.     }
  74.     for (var n:Number = -1; n<18; n++) {
  75.         moveTo(10+n*11,0);
  76.         lineTo(10+n*11,11*12);
  77.     }
  78. };
  79. // 以下为模拟取色输出
  80. _root.createEmptyMovieClip("colorShow",_root.getNextHighestDepth());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值