第2课《颜色的合成与提取》.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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 相比较,

文档评论(0)

zzqky + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档