传统的RGB颜色体系中,每一个分量值的范围都是0到255,如果转换为2进制的话最多需要8位(比如:十进制的255变成二进制则为11111111),三个分量加起来,最多需要24位长度的uint来存储.
而通常我们在html中喜欢用16进制比如"#FF0000"来表示红色,即R:255,G:0,B:0,如何高效的从一个表示颜色的unit数字中把这RGB分量提取出来?
当然:最容易想到的是利用字符串拆分,拆成二个二个一组,然后用:
var
r:
uint
=
parseInt
(
"FF"
,
16
);
trace
(r);
来还原,但是这种方法的效率是很低的,先要转成字符串,再拆分,然后再转为数字。
上面这张图演示了正确做法的原理,同样将已知分量合成为颜色值时,也可以用类似处理,只不过顺序倒过来而已
R分量:先将其左移16位,推到左侧顶端,得到一个包含R分量,其它位置均为0的值
G分量:先将其左移8位,推到中间,得到一个包含G分量,其它位置均为0的值
B分量:不做任何处理
然后将这三个新值,位对位做或运算,只要有值(即1)的部分,就被会保留下来,从而得到新的颜色值。
var
color:
uint
;
function
drawColorRect(r:
uint
,g:
uint
,b:
uint
) {
//直接用位操作合成颜色
color=r<<
16
|g<<
8
|b;
graphics.clear();
graphics.beginFill(color);
graphics.drawRect(
49
,
43
,
267
,
150
);
graphics.endFill();
//lbl1.text = "#" + color.toString(16); 返回16进制的值,不过该值会忽略前导的0
//获取颜色分量
var
r:
uint
= color>>
16
;
var
g:
uint
= color>>
8
&
0xff
;
var
b:
uint
= color &
0xff
;
lbl1.text =
"16进制分量还原结果,红:"
+ r.toString(
"16"
) +
",绿:"
+ g.toString(
"16"
) +
",蓝:"
+ b.toString(
"16"
);
}
txtR.addEventListener(Event.CHANGE,ChangeHandler);
txtG.addEventListener(Event.CHANGE,ChangeHandler);
txtB.addEventListener(Event.CHANGE,ChangeHandler);
function
ChangeHandler(e:Event):
void
{
drawColorRect(txtR.value,txtG.value,txtB.value);
}
drawColorRect(txtR.value,txtG.value,txtB.value);
stop();
分享到:
相关推荐
附件是关于 Flash/Flex 几个重要框架 Cairngorm、Mate、PureMVC以及Swiz 的典型例子,由 Tony Hillerson 提供 Homepage: http://insideria.com
flex/Flash开发系列书籍:基于FLASH的WEB3D应用研究
Flex学习笔记Flex学习笔记Flex学习笔记Flex学习笔记Flex学习笔记
flash/flex画曲线,绘图板,用代码实现的个画曲线功能,类绘图板,可下载看看,不错的学习案例。
语言:C ++许可证:BSD-3代码质量:A + https://lgtm.com/projects/g/Genivia/RE-flex/context:cpp文档:https://www.genivia.com/doc/reflex/html /index.html存储库:https://github.com/Genivia/RE-flex更改日志...
flash/flex 的aqua皮肤.类似苹果系统
FDT-flash/flex devtoolkit for eclipse. for最新版的 FDT 3.5 beta2
来自《潮汕IT男》网站的文章《解决flash/flex/as3 访问中文域名时的流错误》代码示例,地址:http://chenlinsheng.com/?p=990
最近开始学习Flex,其中用到了AS,AS2到AS3发生了很大的变化,完全的面向对象,知道这个特点以后我也一直没有特意的好好去学学AS3,但是随着最近学习的深入,还是有必要学习一下
flex学习笔记 flex学习笔记 flex学习笔记 flex学习笔记 flex学习笔记 flex学习笔记
NULL 博文链接:https://summerbell.iteye.com/blog/359226
第一阶段(2周左右每天至少4个小时):入门 目标是:做简单的demo....参考书:Flex 入门教程http://www.5uflash.com/Flex-AIR/Flexziliao/17.html flex入门介绍:http://download.csdn.net/source/452847
这是作者自己亲自编写的教程,里面包含的有图解教程,各式jar,及配置文件,全部包含在内,如果你是一个决定学习flex初学者,我敢保证它肯定适合你!带上你走上flex开发旅途!
一.flex2的全屏代码 在仅仅使用Flex Builder2(我下载的是FLXB_2.0_Win_WWE.exe)的时候,写全屏代码竟然找不到flash.display.StageDisplayState,于是下载了Flex 2.0.1升级包(官方地址:...(参考:...
总共有4个例子: 1.http://127.0.0.1:8080/flexDemo/HelloWorld/HelloWorld.html ...如果你的数据库配置和我的不一样,请修改flexDemo\WEB-INF\classes\下的DBSetting.properties文件,数据库建表的sql语句是user.sql
Flex学习笔记1
NULL 博文链接:https://as3.iteye.com/blog/1134453
本人用FLEX写的直播播放器,基于RTMP协议。代码要放入tomcat等容器里运行,打开play.html即可看到例子效果,含有源代码,希望能帮助到需要的人。
NULL 博文链接:https://z-one.iteye.com/blog/609269
flex 学习笔记 初学flex的朋友 可以下载了看看 老鸟直接飘过。。。