Регистрация: May 2008
Сообщений: 476
|
ColorMatrixFilter: трансформации цвета
Трансформации цвета клипа, возможные с помощью данного фильтра, аналогичны трансформациям, которые мы раньше (до 8 флэша) задавали с помощью класса Color и метода setTransform().
Трансформация цветов пикселей с помощью матрицы размерностью 4х5 не является изобретением Макромедии — этот метод давно используется в компьютерной графике. Подробное описание механизма можно легко найти в сети, поэтому я опишу процесс только в общих чертах, но чуть подробнее, чем это сделано в хэлпе.
ColorMatrixFilter имеет один-единственный параметр — матрицу трансформации цветов. Выглядит она следующим образом:
R G B A +
R N0 N1 N2 N3 N4
G N5 N6 N7 N8 N9
B N10 N11 N12 N13 N14
A N15 N16 N17 N18 N19
Общая формула расчета цвета с трансформацией такова:
новый_красный = N0*красный + N1*зелёный + N2*синий + N3*альфа +N4
новый_зелёный = N5*красный + N6*зелёный + N7*синий + N8*альфа +N9
новый_синий = N10*красный + N11*зелёный + N12*синий + N13*альфа +N14
новая_альфа = N15*красный + N16*зелёный + N17*синий + N18*альфа +N19
Где "красный", "синий", "зелёный", "альфа" — это исходные значения цветов пикселя перед трансформацией. При применении фильтра к клипу, каждый пиксель изображения подвергается трансформации.
Пятая колонка в матрице (N4, N9, N14, N19) — это сдивиги цветов и альфа канала. Числа в этой колонке просто прибавляются к исходным значениям цвета соответствующих каналов.
В пятой колонке обычно содержатся значения от -255 до 255. В остальных колонках обычно содержатся значения от -1 до 1. В принципе можно задавать значения, выходящие за эти пределы, но это не дает никаких сочетаний результирующего цвета, отличных от тех, которые можно получить при нормальных значениях.
Внимание! Параметр matrix фильтра ColorMatrixFilter НЕ является двумерным массивом. Это одномерный массив, содержащий строки матрицы трансформации по порядку сверху вниз. Именно поэтому в матрице трансформации элементы пронумерованы построчно.
В восьмом флэше кроме класса ColorMatrixFilter для трансформаций цвета существет также класс flash.geom.ColorTransform, применяющийся в сочетании c классом Transform и свойством transform мувипклипов. То есть, можно использовать связку ColorTransform+Transform+MovieClip.transform, возможно это будет удобнее для простых трансформаций цвета. В любом случае, функциональность этой связки для трансформаций цвета не шире, чем функциональность фильтра ColorMatrixFilter.
__________________
Случайность, господа, это знаете ли непознанная необходимость.
|