WEB开发网
开发学院图形图像Flash 第四章 渲染技术Ⅰ[FL 基理译] 阅读

第四章 渲染技术Ⅰ[FL 基理译]

 2009-05-30 12:08:36 来源:WEB开发网   
核心提示: 将它向左移动 8 位后,结果为:000000000101010100000000这样一来,第四章 渲染技术Ⅰ[FL 基理译](5),这 8 位数完全移动到了绿色值的范围, 最后,相反,使用二进制操作是 ActionScript 中最快的运算,假设一个蓝色值为 0xF3(十进制 243),二

将它向左移动 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 中最快的运算,因为它们属于低级运算。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:第四章 渲染 技术

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接