第四章 渲染技术Ⅰ[FL 基理译]
2009-05-30 12:08:36 来源:WEB开发网将它向左移动 8 位后,结果为:
000000000101010100000000
这样一来,这 8 位数完全移动到了绿色值的范围。
最后,假设一个蓝色值为 0xF3(十进制 243),二进制表示为:11110011。因为它们都处在蓝色(blue)的范围,所以不需要再去移动它。这样我们总共就拥有了三组数:
111111110000000000000000
000000000101010100000000
000000000000000011110011
可以简单地将它们加起来,成为一个24位数,但是,还有一种更好更快的方法:使用或(OR)运算,符号是 | 。它会将两组数的每个二进制位进行比较,如果两个之中有一个数为1,那么结果就为 1,如果两个数都为 0,那么结果就为 0。可以使用或(OR)运算将 red, green, blue 的值相加起来,也可以这么说“如果这个数或这个数或这个数中有一个数等于1,那么结果就为1”。最终结果为:
111111110101010111110011
将这个数转换为十六进制就等于 0xFF55F3 。当然,我们无法看到这些二进制位,也不会与这些 0 或 1 打交道,只需要学会这种写法:
var color24:Number = 0xFF << 16 | 0x55 << 8 | 0xF3;
十进制写法是:
var color24:Number = 255 << 16 | 85 << 8 | 243;
Flash 并不关心人们使用的是十进制数还是十六进制数。
同样,还可以将 red, green, blue 的值全部转换为十六进制的字符串,然后将它们连接成一条很长的字符串,最后再把它们转换为十六进制数。但是,如果这样做的话会很麻烦,而且使用字符串操作会非常慢。相反,使用二进制操作是 ActionScript 中最快的运算,因为它们属于低级运算。
更多精彩
赞助商链接