Прошло много времени с тех пор, как мне пришлось что-то делать, это AS1, но я сделаю все возможное.
Основной код для color.setTransform () выглядит следующим образом ...
var AColorTransform = {ra:100, rb:255, ga:100, gb:255, ba:100, bb:255, aa:100, ab:255};
var myColor = new Color(mc);
myColor.setTransform(AColorTransform);
... где mc - мувиклип где-то на сцене.
Помните, что вы спрашиваете о преобразовании , которое по своей природе предназначено для преобразования цветов из в то, что они являются в чем-то другим. Если вы хотите надежно рисовать определенным цветом (например, черным или белым), вам, как правило, гораздо лучше использовать setRGB, который будет выглядеть следующим образом:
var myColor = new Color(mc);
//set to black
myColor.setRGB(0x000000);
//or set to white
myColor.setRGB(0xFFFFFF);
Они работают надежно, хотя могут быть некоторые ошибки. Как правило, просто помните, что цвет прикреплен к определенному мувиклипу ... поэтому, если этот мувиклип выпадает из области видимости (т. Е. Исчезает с временной шкалы), ваш цвет будет удален вместе с ним.
Читайте дальше, только если вы хотите лучше понять преобразование цвета:
Давайте посмотрим на компоненты этого преобразования цвета.
a (multiplier 0 > 100%) b(offset -255 > 255)
r ra rb
g ga gb
b ba bb
a aa bb
Существует четыре канала (r, g, b и a). Первые три для красного, зеленого и синего, а последний для альфа (прозрачность). Каждый канал имеет компонент «a» и компонент «b», то есть ra, rb, ga, gb и т. Д. Компонент «a» представляет собой процентный множитель. То есть он будет умножать любой существующий канал на процент в этом значении. Компонент 'b' является смещением. Таким образом, 'ra' умножает существующий красный канал. 'rb' компенсирует это. Если ваш красный канал начинается с 'FF' (полный на красном), настройка ra: 100 не будет иметь никакого эффекта, так как умножение FF на 100% не приводит к изменениям. Точно так же, если красный начинается с «00» (вообще никакого красного), никакое значение «ra» не будет иметь никакого эффекта, поскольку (если вы вспомните своего Шекспира) дважды, ничто не будет ничем. Вещи между ними умножатся, как и следовало ожидать.
Смещения добавляются после умножения. Таким образом, вы можете умножить на некоторое значение, а затем сместить его:
r (result red color) = (RR * ra%) + rb
g (result green color) = (GG * ga%) + gb
b (result blue color) = (BB * ba%) + bb
a (result alpha) = (AA * aa%) + ab
пример: RR = 128 (гекс 0x80), ra = 50 (50% или .5), rb = -20
результирующий красный канал: (128 * .5) + (-20) = 44 (hex 0x2C)
Честно говоря, все это становится настолько запутанным, что я склонен предпочесть простоту здравого смысла - избегать преобразований в целом и использовать гораздо более простую setRGB ().