·您当前的位置:首页 > 技术教程 > Rtmp技术 >

[AS3]AS3下生成颜色色板的代码示例(as3取色矩阵)

时间:2012-12-16 23:16cnblogs.com
这是仿FLASH里的颜色样本里的取色矩阵做的.[AS3]AS3下生成颜色色板的代码示例(as3取色矩阵)

这是仿FLASH里的颜色样本里的取色矩阵做的.

  1. /** 
  2. 调色板样本生成程序 
  3. 东写西读  
  4. 2007.09.09 
  5. */ 
  6. //生成颜色 
  7. function makeColor(rr:uint,gg:uint,bb:uint):uint { 
  8.  return rr * 16 * 16 * 16 * 16 + gg * 16 * 16 + bb; 
  9. //生成小色块 
  10. function makeRect(sp:Sprite,color:uint):Sprite { 
  11.  sp.graphics.lineStyle(0.1,0xFFFFFF); 
  12.  sp.graphics.beginFill(color); 
  13.  sp.graphics.drawRect(0,0,rectW,rectH); 
  14.  return sp; 
  15. // 
  16. var R:uint=255
  17. var G:uint=255
  18. var B:uint=255
  19. var step:uint=255/5; 
  20. //色板长宽 
  21. var rectW:uint=15
  22. var rectH:uint=15
  23. //生成调色器绘制主体. 
  24. var colorBD:Sprite=new Sprite(); 
  25. this.addChild(colorBD); 
  26. colorBD.x=30
  27. colorBD.y=30
  28. colorBD.name="colorBD"
  29. //******************************************* 
  30. var aX:uint=0
  31. var aY:uint=0
  32. //循环生成色块 
  33. for (var r:uint=0; r<=R; r+=step) { 
  34.  //生成六大区块. 
  35.  var sp6:Sprite=new Sprite(); 
  36.  colorBD.addChild(sp6); 
  37.  //*************************************** 
  38.  var rX:uint=0
  39.  var rY:uint=0
  40.  for (var g:uint=0; g<=G; g+=step) { 
  41.   for (var b:uint=0; b<=B; b+=step) { 
  42.    //生成小色块矩阵 
  43.    var rectSP:Sprite=new Sprite(); 
  44.    sp6.addChild(rectSP); 
  45.    makeRect(rectSP,makeColor(r,g,b)); 
  46.    //设置座标. 
  47.    rY+=rectH; 
  48.    rectSP.x=rX
  49.    rectSP.y=rY
  50.   } 
  51.   rX+=rectW; 
  52.   rY=0
  53.  } 
  54.  sp6.x=aX%(sp6.width*3); 
  55.  sp6.y=aY
  56.  aX+=sp6.width; 
  57.  aY=Math.floor(aX/(sp6.height*3))*sp6.height; 
  58.  //**************************************** 
  59.  
  60.   
  61.  
  62.   
  63.  
  64. 转载:http://space.flash8.net/space/?690727/viewspace-365782.html 
  65.  
  66.   
  67.  
  68. 生成混色器的方法: 
  69.  
  70. 核心代码:(不可直接运行的哦) 
  71.  
  72. for (var j=0; j<200; j+=3) { 
  73.     /*1530=255*6 
  74.     依据R=255G=0B=0 
  75.     R=255;G=255;B=0 
  76.     R=0;G=255;B=255
  77.     R=0;G=0;B=255
  78.     R=255;G=0;B=255
  79.     R=255;G=0;B=0 
  80.     来划分六个大色系 
  81.     */ 
  82.  
  83. for (var i=0; i<1530; i+=5) { 
  84.      if (i<255) { 
  85.       g+=5; 
  86.      } else if (i<510) { 
  87.       r-=5
  88.      } else if (i<765) { 
  89.       b+=5; 
  90.      } else if (i<1020) { 
  91.       g-=5
  92.      } else if (i<1275) { 
  93.       r+=5; 
  94.      } else { 
  95.       b-=5
  96.      } 
  97.      //i%6设置一个限制,也可以不设 
  98.      if (i%6==0) { 
  99.       rr=(128-r)/(100/j*2); 
  100.       gg=(128-g)/(100/j*2); 
  101.       bb=(128-b)/(100/j*2); 
  102.       //将r,b,g转化为可用的颜色值 
  103.       color=(r+rr)<<16|(g+gg)<<8|(b+bb); 
  104.  
  105.       colorSprite.graphics.beginFill(color); 
  106.       //(i/6)的值恰好是i/15的整数2倍 
  107.       colorSprite.graphics.drawRect(i/15,j/2,2,2); 
  108.       colorSprite.graphics.endFill(); 
  109.      } 
  110.     } 
  111.    } 
  112.  
  113. //根据鼠标位置提取亮度值 
  114.  
  115. private function shows(cx:Number,cy:Number) { 
  116.    var color:uint; 
  117.    var r2:Number=0
  118.    var g2:Number=0
  119.    var b2:Number=0
  120.    //cool值提取色彩 
  121.    var cool=b1.getPixel(cx,cy);//zi.x, zi.y 
  122.    //分别提取r,g,b值 
  123.    r=(cool>>16); 
  124.    g=(cool>>8)&0xff; 
  125.    b=cool&0xff; 
  126.    rr=(255-r)/100; 
  127.    gg=(255-g)/100; 
  128.    bb=(255-b)/100; 
  129.    rr2=r/100; 
  130.    gg2=g/100; 
  131.    bb2=b/100; 
  132.    for (var j=0; j<200; j+=1) {//200 
  133.     if (j<100) { 
  134.      color=(r+rr*(100-j))<<16|(g+gg*(100-j))<<8|(b+bb*(100-j)); 
  135.     } else { 
  136.      color=(r-r2*(j-100))<<16|(g-g2*(j-100))<<8|(b-b2*(j-100)); 
  137.     } 
  138.     cos.graphics.beginFill(color); 
  139.     cos.graphics.drawRect(m1.x+104,m1.y+j/2,35,1); 
  140.    } 
  141.    cos.graphics.endFill(); 
  142.   } 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器