- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Flash ActionScript3.0颜色应用之
第2课:颜色的合成与提取
教材编写:波澜不惊
一、与颜色合成与提取有关的运算符
1、位移运算符。包括位左移运算符和位右移运算符。位左移运算符表示将数值的二进制表示向左移动指定的位数,执行此运算而空出来的位的位置使用 0 填充,从左端移出的位将被舍去。位右移运算符表示将数值的二进制表示向右移动指定的位数,执行此运算从右端移出的位将被舍去。
2、位或运算符。符号为“|”,在二进制级别上比较两个数字,如果其中的一个数为1,那么结果就是1;如果两个数都是0,那么结果就是0。
3、位与运算符。符号为“”,在二进制级别上比较两个数字,如果两个数都是1,结果就是1;如果其中一个数是0,那么结果就是0。
二、合成颜色的方法
如何将红、绿、蓝三种颜色值组成一个有效的颜色值呢?假设有三个变量red、green、blue,每个变量里面保存一个0到255之间的数。要把 它们组成一个有效的颜色值请使用下面的公式:
color24=red16|green8|blue;
加入透明度后,建立一个32位色彩值,公式如下:
color32=alpha24|red16|green8|blue;
对于24位色来说, 如果把颜色值的每一位都列出来,就会得到一串由24个0或1组成的字串。把十六进制0xRRGGBB转换成二进制后是这样的:RRRRRRRRGGGGGGGGBBBBBBBB,我们看到有8位用来表示红通道,8位表示绿通道,8位表示蓝通道。
在色彩合成公式中, 第一个位操作符是 , 是一个位左移运算符,该操作是将二进制数值向左侧移动。假设你有一个红色值(red)为0xFF(十进制255),可以由二进制表示为将它向左移动16位,空出的位置补0,结果是:111111110000000000000000。在24位色彩中,它表示红色,转换为十六进制后为0xFF0000,是纯红色。
下面,假设有一个绿色值(green)为0x55(十进制85),二进制表示为它向左移动8位后,结果为:000000000101010100000000 这样一来,这8位数完全移动到了绿色值的范围。
最后,假设一个蓝色值为0xF3(十进制243),二进制表示为 因为它们都处在蓝色(blue)的范围,所以不需要再去移动它。这样我们总共就拥有了三组数:
111111110000000000000000
000000000101010100000000
000000000000000011110011
可以简单地将它们加起来,成为一个24位数。还有一种更好更快的方法,使用位或(OR)运算符。red, green, blue 的值相加起来的最终结果为: 111111110101010111110011,将这个数转换为十六进制就等于 0xFF55F3 。当然,我们无法看到这些二进制位,也不会与这些 0 或 1 打交道,只需要学会这种写法:
var color24:uint = 0xFF 16 | 0x55 8 | 0xF3;
十进制写法是:
var color24:uint = 255 16 | 85 8 | 243;
Flash 并不关心人们使用的是十进制数还是十六进制数。
对于 32 位数, 道理也一样, 加入 8 位 alpha(透明度)通道并将其向左移 24 位。例如,有一组 32 位数为 0xFFFF55F3,将 alpha 值向左移动 24 位,结果如下: 11111111111111110101010111110011 前 8 位数表示透明度,后面的 red, green, blue 值与前面的一样。
三、提取组成颜色的方法
假如有这样一个数 0xFF55F3,要从中提取 red, green, blue各通道的值。请看下面的公式,首先是 24
red = color24 16;
green = color24 8 0xFF;
blue = color24 0xFF;
首先, 是位右移运算符, 用于将二进制位向右移动。 从右端移出的位将被舍去。下面从 red 开始: 111111110101010111110011 将颜色值向右移动 16 位,结果如下:或是 0xFF(255) 。
对于 green,向右移动 8 位,结果如下: 1111111101010101 这里已经舍去了 blue 的值, 但是 red 值还留在一旁。 现在就要用到位与(And)运算符, 我们把它与 0xFF 进行比较:
1111111101010101
0000000011111111
所有的 red 位的数字都与 0 相比较,
您可能关注的文档
最近下载
- 急性胰腺炎急救护理措施.pptx
- 老年人跌倒风险综合管理专家共识PPT.docx VIP
- 2024-2025学年高中音乐必修《歌唱》人音版(2019)教学设计合集.docx
- 人教版小学一年级数学上册期中试卷及答案(精品推荐)..doc VIP
- 2025云南大理白族自治州检验检测院(第二批)招聘编外聘用人员5人备考练习试题及答案解析.docx VIP
- FAN-045 37#地块 电梯井施工操作架搭设 及安全防护方案 终.doc VIP
- 《油气管道安全管理》课件.ppt VIP
- 高速铁路客运服务专业职业生涯规划书.pptx
- GJ B-360B-2009 电子及电气元件试验方法.pdf VIP
- 概率论与数理统计教程(第2版) 茆诗松全套PPT课件.ppt
原创力文档


文档评论(0)