AS3改变颜色的H / S / B / C.

时间:2014-04-18 20:24:42

标签: actionscript-3 colors brightness contrast

我正在尝试创建一个简单的绘图应用程序,允许用户使用滑块更改其颜色的色调,饱和度,亮度和对比度。我一直在四处寻找,这就是我想出来的,我需要一些帮助来确定它为什么不起作用。

var colourFilter:AdjustColor = new AdjustColor();
var mColourMatrix:ColorMatrixFilter;
var mMatrix:Array;

brightSL.addEventListener(SliderEvent.CHANGE,changecol) // brightSL would be the brightness slider
contSL.addEventListener(SliderEvent.CHANGE,changecol)
satSL.addEventListener(SliderEvent.CHANGE,changecol)
hueSL.addEventListener(SliderEvent.CHANGE,changecol)


function changecol (SliderEvent):void {
colourFilter.brightness = brightSL.value;
colourFilter.contrast = contSL.value;
colourFilter.saturation = satSL.value;
colourFilter.hue = hueSL.value;

mMatrix = colourFilter.CalculateFinalFlatArray();
mColourMatrix= new ColorMatrixFilter(mMatrix);

selectedColor.filters = [mColourMatrix]; // selectedColor is the color the user is currently using
    board.graphics.lineStyle(sizeSlider.value, selectedColor, alphaSlider.value)
  }

问题是颜色没有变化,我不知道为什么。任何帮助都会受到赞赏

1 个答案:

答案 0 :(得分:0)

我不是绝对肯定,但我认为问题是你没有确保在创建实例后设置了AdjustColor对象的所有属性。尝试更改

var colourFilter:AdjustColor = new AdjustColor();
var mColourMatrix:ColorMatrixFilter;
var mMatrix:Array;

var colourFilter:AdjustColor = new AdjustColor();
colourFilter.brightness = 0;
colourFilter.contrast = 0;
colourFilter.saturation = 0;
colourFilter.hue = 0;
var mColourMatrix:ColorMatrixFilter;
var mMatrix:Array;

如果可行但不适合您的使用案例,则使用AdjustColor.AllValuesAreSet()可能有所帮助。