Зміна кольору об'єктів засобами actionscript, edapskov

Часом, при роботі над 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 / * Додаємо ColorPicker, щоб користувач міг би вибрати потрібний йому колір * / var colorPicker: ColorPicker = new ColorPicker (); colorPicker.move (50, 50); colorPicker.addEventListener (ColorPickerEvent.CHANGE, changeColorPicker); addChild (colorPicker); function changeColorPicker (event: ColorPickerEvent): void

У мене вийшло наступне:

Вибираємо в ColorPicker-е будь-який колір і натискаємо курсором мишки по чоловічкові. Примітивно, але приклади і повинні бути простими. Природно, якщо ви витратите більше часу і сил, ніж я, то і результат отримаєте більш гідний.

Завантажити исходник до даного уроку можна тут (на ActionScript 3.0 і під Adobe Flash 5.5).