我正在通过下面的功能调整图像颜色。问题是,如果我需要将一个colorFilter值切换到,它就不能工作,但是如果我输入0.1而不是,它就能工作。如果没有这样的解决办法,该如何使它发挥作用?
import fl.motion.AdjustColor;
import flash.filters.ColorMatrixFilter;
var colorFilter:AdjustColor = new AdjustColor();
var mColorMatrix:ColorMatrixFilter;
var mMatrix:Array = [];
var MC:MovieClip = new MovieClip();
function adjustColors():void
{
colorFilter.hue = 50;
colorFilter.saturation = 50;
colorFilter.brightness = 50;
colorFilter.contrast = 12;
mMatrix = colorFilter.CalculateFinalFlatArray();
mColorMatrix = new ColorMatrixFilter(mMatrix);
MC.filters = [mColorMatrix];
}发布于 2013-01-09 14:22:43
我通过向adjustColors()添加一个参数并两次调用它来测试这个问题,我看到了同样的问题。我认为这只是一个错误,它忽略了零值。
这并不是一个更好的解决办法,但是如果您每次只创建一个新的AdjustColor,它应该可以正常工作:
import fl.motion.AdjustColor;
import flash.filters.ColorMatrixFilter;
var colorFilter:AdjustColor = new AdjustColor();
var mColorMatrix:ColorMatrixFilter;
var mMatrix:Array = [];
var MC:MovieClip = new MovieClip();
function adjustColors():void
{
colorFilter = new AdjustColor();
colorFilter.hue = 50;
colorFilter.saturation = 50;
colorFilter.brightness = 50;
colorFilter.contrast = 12;
mMatrix = colorFilter.CalculateFinalFlatArray();
mColorMatrix = new ColorMatrixFilter(mMatrix);
MC.filters = [mColorMatrix];
}发布于 2013-10-15 01:14:34
下面是我的参考方法:在设置每个属性时只需使用逻辑或赋值即可。这样,如果一个值为0时,它将计算为false,而.1将被赋值:
var colorMat:ColorMatrixFilter = new ColorMatrixFilter();
var colorAdjust:AdjustColor = new AdjustColor();
const colorsAdj:Array =
[
// BRIGHTNESS, CONTRAST, SATURATION, HUE
[-20,0,20,-50],
[0,0,0,0],
[0,0,0,17]
];
function setColorMat(colorID:int):void
{
colorAdjust.brightness = colorsAdj[colorID][0] ||= .1;
colorAdjust.contrast = colorsAdj[colorID][1] ||= .1;
colorAdjust.saturation = colorsAdj[colorID][2] ||= .1;
colorAdjust.hue = colorsAdj[colorID][3] ||= .1;
colorMat.matrix = colorAdjust.CalculateFinalFlatArray();
}这样你就避免每次重新创建一个新的ColorMatrixFilter,以防它真的改变了什么.你保持一个干净的阵列..。;-)
https://stackoverflow.com/questions/10172393
复制相似问题