AS3 меняет H/S/B/C цвета
Я пытаюсь создать простое приложение для рисования, которое позволяет пользователю изменять оттенок, насыщенность, яркость и контрастность своего цвета с помощью ползунков. Я искал вокруг, и это все, что я придумал, и мне нужна помощь, чтобы определить, почему это не работает.
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 ответ
Я не совсем уверен, но я считаю, что проблема в том, что вы не гарантируете, что все свойства объекта 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()
может помочь.