Это решение Flex3.
mx:Button
имеет значок дочернего элемента внутри себя.Вы можете переопределить функцию updateDisplayList
и настройщик enabled
, чтобы сделать этот значок черно-белым.
Чтобы сделать черно-белое изображение, вам необходимо усреднить значения цвета RGB.Вот формула для вещания и телевидения:
grey = R * 0.3 + b2 * 0.59 + b3 * 0.11
В вашем случае вы можете использовать flash.filters.ColorMatrixFilter на значке, этот фильтр преобразует цвета цели.Черно-белая матрица для фильтра:
[ 0.3, 0.59, 0.11, 0,
0.3, 0.59, 0.11, 0,
0.3, 0.59, 0.11, 0,
0, 0, 1, 0 ]
В последнем столбце указано слагаемое для каждого цвета, поэтому вы можете сделать свое изображение более красным, более зеленым, сепией и т. Д.
Фильтр применяется для отображения компонента следующим образом:
var filter = Filter();
component.filters.push(filter); // doesn't work, and not because null pointer
component.filters = [filter]; // works
Важно переназначить массив новыми фильтрами, иначе компонент не будет обновлять его.