我需要设置一系列MC的颜色为同一色调,以不同的颜色强度来区分,强度区分我用的Color类的brightness属性来设置,可是遇到 了一个问题,代码如下:
import fl.motion.Color;
var MyColor:Color=new Color();
MyColor.color=0x336655;//设置色调
MyColor.brightness=-0.5;//设置亮度
a.transform.colorTransform=MyColor;
我的问题是,影片剪辑的变化没有按照原来的设想,现在是设置色调和设置亮度这两行代码哪一行在后面,哪一行就七座用,前一句设置好像被覆盖了一样,怎么使两个设置同时生效啊。
另外请问大家:设置同色调,不同颜色强度还有其他的好方法吗?不要滤镜设置那一种,贴上来学习下,谢谢。
我在黑羽的网站上看到一个帖子,是一个计算颜色亮度的函数,但是没有参数取值范围,大家帮我分析下,再次感谢!!
* @return 目标颜色 uint
*/
public function computeColor (color : uint, brightness : int) :uint {
var r : int = ((color>>>16) & 0x000000FF);
var g : int = ((color>>> 8) & 0x000000FF);
var b : int = ((color ) & 0x000000FF);
var y : int;
var v : int;
var u : int;
//trace ("RGB:"+r+","+g+","+b);
//********RGB->YUV*******
//y=0.299*r+0.587*g+0.114*b;
//u=-0.148*r-0.289*g+0.437*b;
//v=0.615*r-0.515*g-0.100*b;
y = ((r*313524)>>20) + ((g*615514)>>20) + ((b*119538)>>20);
u = -((155189*r)>>20) - ((303038*g)>>20) + ((458227*b)>>20);
v = ((644874*r)>>20) - ((540016*g)>>20) - ((104857*b)>>20);
y += brightness;
//********YUV->RGB*******
// r = y + 1.14*v;
// g = y - 0.39*u - 0.58*v;
// b = y + 2.03*u;
r = y + ((1195376*v)>>20);
g = y - ((408944*u)>>20) - ((608174*v)>>20);
b = y + ((2128609*u)>>20);
r = Math.max (0,Math.min (r,255));
g = Math.max (0,Math.min (g,255));
b = Math.max (0,Math.min (b,255));
// trace ("RGB:"+r+","+g+","+b);
return ((r<<16)|(g<<8)|b);
}