Порой, при работе над flash-приложением, возникает необходимость перекрасить какой-либо объект (MovieClip, Sprite) на сцене флеш-ролика в новый цвет. И язык ActionScript предоставляет нам такую возможность. Так, в ActionScript 2.0 для этого используется класс Color.
Допустим, у нас в флеш-ролике имеется MovieClip с именем "mc". Этот мувик мы хотим перекрасить в красный (0xff0000) цвет.
Код ActionScript 2.0:
var color:Color = new Color(mc);
color.setRGB(0xff0000);
Как видите, с помощью метода setRGB() класса Color наша задача решается быстро и легко.
В ActionScript 3.0 для изменение цвета у объектов списка отображения используются возможности класса ColorTransform. В самом простом случае это выглядит следующим образом.
Код ActionScript 3.0:
var ct:ColorTransform = new ColorTransform();
ct.color = 0xff0000;
mc.transform.colorTransform = ct;
Как можно применить рассмотренные выше возможности класса Color языка ActionScript 2.0 и класса ColorTransform языка ActionScript 3.0 на практике? Ну, например, мы можем создать простое приложение-«раскраску».
Делать пример я буду в Adobe Flash CS 5.5 и на ActionScript 3.0. Для нашей будущей раскраски нужна заготовка: давайте нарисуем человечка и все составляющие части этого человечка (голову, туловище, руки, ноги ... ) сделаем мувиклипами. Этим мувиклипам дадим имена "mc_1", "mc_2", "mc_3" и так далее. Кроме этого, нам понадобится стандартный компонент ColorPicker (можно, кстати, воспользоваться палитрой цветов из урока «Создание палитры цветов на ActionScript 3.0»). Просто перетащите данный компонент из окна «Компоненты» на рабочий стол программы, а потом удалите его с рабочего стола (при этом компонент останется в библиотеке вашего проекта).
Осталось написать код. Пишем...
Код ActionScript 3.0:
/*
импорт классов
*/
import flash.display.MovieClip;
import flash.events.MouseEvent;
import fl.controls.ColorPicker;
import fl.events.ColorPickerEvent;
/*
переменная, в которой хранится выбранный пользователем цвет
*/
var color:uint = 0x000000;
/*
мувиклипы, из которых состоит раскраска
при клике по любому из мувиков будет вызываться функция onClick
*/
mc_1.addEventListener(MouseEvent.CLICK, onClick);
mc_2.addEventListener(MouseEvent.CLICK, onClick);
mc_3.addEventListener(MouseEvent.CLICK, onClick);
mc_4.addEventListener(MouseEvent.CLICK, onClick);
mc_5.addEventListener(MouseEvent.CLICK, onClick);
mc_6.addEventListener(MouseEvent.CLICK, onClick);
mc_7.addEventListener(MouseEvent.CLICK, onClick);
mc_8.addEventListener(MouseEvent.CLICK, onClick);
mc_9.addEventListener(MouseEvent.CLICK, onClick);
mc_10.addEventListener(MouseEvent.CLICK, onClick);
mc_11.addEventListener(MouseEvent.CLICK, onClick);
mc_12.addEventListener(MouseEvent.CLICK, onClick);
mc_13.addEventListener(MouseEvent.CLICK, onClick);
mc_14.addEventListener(MouseEvent.CLICK, onClick);
mc_15.addEventListener(MouseEvent.CLICK, onClick);
mc_16.addEventListener(MouseEvent.CLICK, onClick);
mc_17.addEventListener(MouseEvent.CLICK, onClick);
mc_18.addEventListener(MouseEvent.CLICK, onClick);
mc_19.addEventListener(MouseEvent.CLICK, onClick);
mc_20.addEventListener(MouseEvent.CLICK, onClick);
mc_21.addEventListener(MouseEvent.CLICK, onClick);
mc_22.addEventListener(MouseEvent.CLICK, onClick);
mc_23.addEventListener(MouseEvent.CLICK, onClick);
mc_24.addEventListener(MouseEvent.CLICK, onClick);
mc_25.addEventListener(MouseEvent.CLICK, onClick);
/*
функция, которая срабатывает при клике по мувику
именно эта функция и меняет цвет мувиклипов
*/
function onClick(event:MouseEvent):void
{
var ct:ColorTransform = new ColorTransform();
ct.color = color;
event.target.transform.colorTransform = ct;
}
/*
добавляем ColorPicker, чтобы пользователь мог бы выбрать нужный ему цвет
*/
var colorPicker:ColorPicker = new ColorPicker();
colorPicker.move(50, 50);
colorPicker.addEventListener(ColorPickerEvent.CHANGE, changeColorPicker);
addChild(colorPicker);
function changeColorPicker(event:ColorPickerEvent):void
{
color = event.target.selectedColor;
}
У меня получилось следующее:
Выбираем в ColorPicker-е любой цвет и кликаем курсором мышки по человечку. Примитивно, но примеры и должны быть простыми. Естественно, если вы потратите больше времени и сил, чем я, то и результат получите более достойный.
Скачать исходник к данному уроку можно здесь (на ActionScript 3.0 и под Adobe Flash 5.5).