color

来源:互联网 发布:php 地方门户系统 编辑:程序博客网 时间:2024/05/05 11:36

Flash使用RGB颜色值,这三种混合色的每一种都是一个从0到255中的数,所以共有(256*256*256)个颜色值.
24位颜色 : 要使用8位(0或1)才能表示256个数值, 8乘以3(红绿蓝)意味着需要24位才能表示颜色值, 32位颜色多的8位数值表示透明度.


色彩合成: color24 = red << 16 | green << 8 | blue;  
        color32 = alpha << 24 | red << 16 | green << 8 | blue; (或运算: 两个数中有一个为1,结果就为1,若都为0则为0);
例颜色值0xFF55F3的组成:
   红色范围的值为0xFF, 二进制为11111111,将它向左移动16位,结果:111111110000000000000000;
   绿色范围的值为0x55,二进制为01010101,将它向左移动8位,结果: 000000000101010100000000;
   蓝色范围的值为0xF3,二进制为11110011,不需要移动.
将这三组数用或运算运行后,得到111111110101010111110011,转换为16进制等于0xFF55F3.可以写成:
var color24:Number = oxFF << 16 | ox55 << 8 | 0xF3;
var color24:Number = 255 << 16 | 85 << 8 | 243;(32位的例子道理相同)


获取颜色值: red = color24 >> 16; green = color24 >> 8 & 0xFF; blue = color24 & 0xFF; ">>"是右移运算符,如果移动的过多数字就会消失.
例颜色值0xFF55F3.
   red : 右移16位,结果 : 11111111,即0xFF(255);
   green : 右移8位,结果 : 1111111101010101;这时得出了blue的值,但red值还在一边,使用&操作符(两个都是1则为1,其中一个为0则为0)
    将其与0xFF进行运算 : 1111111101010101 & 0000000011111111,因为red位的数字都与0相比较,所以都为0,所以结果为 0000000001010101;
   blue : 不需要执行右移操作,只需要与0xFF执行&操作即可.
32位与此类似,需要改动的是 alpha = color32 >> 24; red = color32 >> 16 & 0xFF; 其他不变.