首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3 -调整图像颜色

AS3 -调整图像颜色
EN

Stack Overflow用户
提问于 2012-04-16 10:26:07
回答 2查看 5.1K关注 0票数 1

我正在通过下面的功能调整图像颜色。问题是,如果我需要将一个colorFilter值切换到,它就不能工作,但是如果我输入0.1而不是,它就能工作。如果没有这样的解决办法,该如何使它发挥作用?

代码语言:javascript
复制
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];
}
EN

回答 2

Stack Overflow用户

发布于 2013-01-09 14:22:43

我通过向adjustColors()添加一个参数并两次调用它来测试这个问题,我看到了同样的问题。我认为这只是一个错误,它忽略了零值。

这并不是一个更好的解决办法,但是如果您每次只创建一个新的AdjustColor,它应该可以正常工作:

代码语言:javascript
复制
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];
}
票数 2
EN

Stack Overflow用户

发布于 2013-10-15 01:14:34

下面是我的参考方法:在设置每个属性时只需使用逻辑或赋值即可。这样,如果一个值为0时,它将计算为false,而.1将被赋值:

代码语言:javascript
复制
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,以防它真的改变了什么.你保持一个干净的阵列..。;-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10172393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档