我有一个AARRGGBB
值,用于填充我在尝试使用照明引擎时使用的网格中的单元格:
var color:Number = 0xFF000000; // Full opaque black.
有些光源有半径参数。从光源单元到该半径内的附近单元测量距离。然后给每个附近的单元格赋予百分比值,即:
distanceFromSource / sourceRadius
因此,更高的百分比表示远离源的细胞。
我想将上面颜色的alpha通道乘以百分比,然后用结果值填充单元格。基本上我想要AARRGGBB值中的0-100%AA。当我尝试直接乘法时,我得到奇怪的结果:
我认为我需要使用特殊运算符,以及BitmapDataChannel
中的值。不幸的是,这就是我遇到的问题。
如何将AARRGGBB颜色中的Alpha通道乘以百分比?
答案 0 :(得分:3)
您需要保留像素的rgb值。只乘以uint的alpha字节。
function multiplyAlpha(color:uint, percent:Number):uint
{
//returns the pixel with it's aplha value multiplied by percent
//percent is expected to be in the range 0..1
var a:uint = (color >> 24) * percent;
var rgb:uint = color & 0x00ffffff;
return ((a<<24) | rgb);
}
function setAlphaByPercent(color:uint, percent:Number):uint
{
//returns the pixel with it's a new alpha value based on percent
//percent is expected to be in the range 0..1
var a:uint = 0xff * percent;
var rgb:uint = color & 0x00ffffff;
return ((a<<24) | rgb);
}