[AS3]AS3下生成颜色色板的代码示例(as3取色矩阵)
这是仿FLASH里的颜色样本里的取色矩阵做的.[AS3]AS3下生成颜色色板的代码示例(as3取色矩阵)
这是仿FLASH里的颜色样本里的取色矩阵做的.
- /**
- 调色板样本生成程序
- 东写西读
- 2007.09.09
- */
- //生成颜色
- function makeColor(rr:uint,gg:uint,bb:uint):uint {
- return rr * 16 * 16 * 16 * 16 + gg * 16 * 16 + bb;
- }
- //生成小色块
- function makeRect(sp:Sprite,color:uint):Sprite {
- sp.graphics.lineStyle(0.1,0xFFFFFF);
- sp.graphics.beginFill(color);
- sp.graphics.drawRect(0,0,rectW,rectH);
- return sp;
- }
- //
- var R:uint=255;
- var G:uint=255;
- var B:uint=255;
- var step:uint=255/5;
- //色板长宽
- var rectW:uint=15;
- var rectH:uint=15;
- //生成调色器绘制主体.
- var colorBD:Sprite=new Sprite();
- this.addChild(colorBD);
- colorBD.x=30;
- colorBD.y=30;
- colorBD.name="colorBD";
- //*******************************************
- var aX:uint=0;
- var aY:uint=0;
- //循环生成色块
- for (var r:uint=0; r<=R; r+=step) {
- //生成六大区块.
- var sp6:Sprite=new Sprite();
- colorBD.addChild(sp6);
- //***************************************
- var rX:uint=0;
- var rY:uint=0;
- for (var g:uint=0; g<=G; g+=step) {
- for (var b:uint=0; b<=B; b+=step) {
- //生成小色块矩阵
- var rectSP:Sprite=new Sprite();
- sp6.addChild(rectSP);
- makeRect(rectSP,makeColor(r,g,b));
- //设置座标.
- rY+=rectH;
- rectSP.x=rX;
- rectSP.y=rY;
- }
- rX+=rectW;
- rY=0;
- }
- sp6.x=aX%(sp6.width*3);
- sp6.y=aY;
- aX+=sp6.width;
- aY=Math.floor(aX/(sp6.height*3))*sp6.height;
- //****************************************
- }
- 转载:http://space.flash8.net/space/?690727/viewspace-365782.html
- 生成混色器的方法:
- 核心代码:(不可直接运行的哦)
- for (var j=0; j<200; j+=3) {
- /*1530=255*6
- 依据R=255; G=0B=0
- R=255;G=255;B=0
- R=0;G=255;B=255;
- R=0;G=0;B=255;
- R=255;G=0;B=255;
- R=255;G=0;B=0
- 来划分六个大色系
- */
- for (var i=0; i<1530; i+=5) {
- if (i<255) {
- g+=5;
- } else if (i<510) {
- r-=5;
- } else if (i<765) {
- b+=5;
- } else if (i<1020) {
- g-=5;
- } else if (i<1275) {
- r+=5;
- } else {
- b-=5;
- }
- //i%6设置一个限制,也可以不设
- if (i%6==0) {
- rr=(128-r)/(100/j*2);
- gg=(128-g)/(100/j*2);
- bb=(128-b)/(100/j*2);
- //将r,b,g转化为可用的颜色值
- color=(r+rr)<<16|(g+gg)<<8|(b+bb);
- colorSprite.graphics.beginFill(color);
- //(i/6)的值恰好是i/15的整数2倍
- colorSprite.graphics.drawRect(i/15,j/2,2,2);
- colorSprite.graphics.endFill();
- }
- }
- }
- //根据鼠标位置提取亮度值
- private function shows(cx:Number,cy:Number) {
- var color:uint;
- var r2:Number=0;
- var g2:Number=0;
- var b2:Number=0;
- //cool值提取色彩
- var cool=b1.getPixel(cx,cy);//zi.x, zi.y
- //分别提取r,g,b值
- r=(cool>>16);
- g=(cool>>8)&0xff;
- b=cool&0xff;
- rr=(255-r)/100;
- gg=(255-g)/100;
- bb=(255-b)/100;
- rr2=r/100;
- gg2=g/100;
- bb2=b/100;
- for (var j=0; j<200; j+=1) {//200
- if (j<100) {
- color=(r+rr*(100-j))<<16|(g+gg*(100-j))<<8|(b+bb*(100-j));
- } else {
- color=(r-r2*(j-100))<<16|(g-g2*(j-100))<<8|(b-b2*(j-100));
- }
- cos.graphics.beginFill(color);
- cos.graphics.drawRect(m1.x+104,m1.y+j/2,35,1);
- }
- cos.graphics.endFill();
- }
热门文章推荐
- [FMS]Adobe FMS产品(Adobe Flash Media Server)使用介绍(组图)
- [FMS]Flash Media Server之教程附示例代码
- [RTMP]国产RTMP/HLS直播服务器simple-rtmp-server
- [WOWZA]用wowza流媒体服务器发布和播放直播流(RTMP)
- [RTMP]又一款rtmp类的服务器openrtmfp流媒体服务器
- [RTMP]adobe之FMS视频直播解决方案流程介绍(组图)
- [RTMP协议]实时消息传输协议 (RTMP) 常识性介绍
- [FMS]Adobe的Flash Media Server服务器(FMS服务器)安装
请稍候...