Статьи

Создать пользовательскую палитру цветов во Flash

Color Picker — это приложение, обычно используемое в графическом программном обеспечении и в Интернете, которое используется для управления цветом, создания цветовых схем, выбора цветов и многого другого.

В этом уроке я научу вас, как создавать собственные палитры цветов во Flash с использованием ActionScript 3.0.




Используя существующее изображение, мы извлечем значения цвета с помощью класса ColorTransform и позиции Mouse, затем мы можем применить возвращенное значение к любому DisplayObject.

Откройте Flash и создайте новый файл Flash (ActionScript 3).

Установите размер сцены 600×300 и установите цвет фона # D2D1D0.

Примечание редактора: хороший скриншот Карлос: P

Мы создадим ящик, который будет содержать все элементы палитры цветов.

Нарисуйте прямоугольник размером 217×174 px и залейте его этим цветом: # A6A6A6.

Теперь дублируйте прямоугольник (Cmd + D), сделайте его 215×172 px и заполните его: #FAFAFA.

Повторите процесс и заполните новый прямоугольник с помощью: # E0E0E0.

Это будет фон палитры цветов.

Эта палитра цветов имеет два цветовых индикатора: один отображает активный цвет, а другой — цвет, который в данный момент возвращается движением мыши.

Выберите Rectangle Tool (R) и создайте два прямоугольника 50×23 px, используя любой цвет, я использовал черный, чтобы контрастировать на фоне. Преобразуйте каждый прямоугольник в MovieClip (F8) и установите имена экземпляров в «color» и «selectedColor».

Мы хотим знать шестнадцатеричное значение цветов, отображаемых палитрой цветов, динамические текстовые поля сделают эту работу.

Выберите инструмент Text Tool (T) и создайте два динамических текстовых поля рядом с каждым цветным прямоугольником. Я использовал этот текстовый формат: Helvetica Neue 11pt, # 353535. Не забудьте вставить цифры и знак «#» в меню свойств.

Назовите поля «colorHex» для левого и «sColor» для правого.

Нам понадобится цветовой спектр для создания палитры цветов. В моем примере я использовал это изображение из ColorTools .

Измените размер изображения до 200×130 px и нарисуйте линейный градиент от черного к белому на стороне, чтобы добавить шкалу серого.

Преобразуйте полный спектр в мувиклип и назовите его «спектр».

Преобразуйте все клипы в один мувиклип и установите имя экземпляра «colorPicker».

Теперь нам нужен объект для применения данных, полученных из палитры цветов. Любой DisplayObject будет работать, в этом случае я буду использовать некоторый текст.

Имя экземпляра TextField — «txt».

Создайте новый документ ActionScript и сохраните его как «Main.as».

Это классы, которые мы будем использовать в этом классе. Для конкретной помощи по каждому классу, пожалуйста, обратитесь к справке Flash (F1).

1
2
3
4
5
6
package
{
    import flash.display.Sprite;
    import flash.display.BitmapData;
    import flash.geom.ColorTransform;
    import flash.events.MouseEvent;

Этот код объявит и расширит класс, мы расширяем его, используя класс Sprite, так как мы используем некоторые его свойства и методы.

1
2
public class Main extends Sprite
{

Мы используем три переменные, объясненные в комментариях к коду.

1
2
3
var bitmapData:BitmapData = new BitmapData(202,132);
var colorTransform:ColorTransform = new ColorTransform();
var hexColor:*;

Это основная функция.

1
2
3
4
5
6
7
8
9
public function Main():void
{
    bitmapData.draw(colorPicker.spectrum);
 
    /* Function listeners */
 
    colorPicker.spectrum.addEventListener(MouseEvent.MOUSE_MOVE, updateColorPicker);
    colorPicker.spectrum.addEventListener(MouseEvent.MOUSE_UP, setValue);
}

Эта функция будет обрабатывать изменения цвета, когда пользователь перемещает мышь.

01
02
03
04
05
06
07
08
09
10
11
12
private function updateColorPicker(e:MouseEvent):void
{
    /* Gets the color from the pixel where the mouse is and passes the value to the colorTransform variable */
 
    hexColor = «0x» + bitmapData.getPixel(colorPicker.spectrum.mouseX,colorPicker.spectrum.mouseY).toString(16);
    colorTransform.color = hexColor;
 
    /*Sets the color transform data to the «color» clip and the «colorHex» field in the ColorPicker */
 
    colorPicker.color.transform.colorTransform = colorTransform;
    colorPicker.colorHex.text = «#» + bitmapData.getPixel(colorPicker.spectrum.mouseX,colorPicker.spectrum.mouseY).toString(16).toUpperCase();
}

Эта функция устанавливает значение activeColor MovieClip и sColor TextField в палитре цветов, а также выбранную пользователем цель.

1
2
3
4
5
6
private function setValue(e:MouseEvent):void
{
    txt.textColor = hexColor;
    colorPicker.selectedColor.transform.colorTransform = colorTransform;
    colorPicker.sColor.text = colorPicker.colorHex.text;
}

Вернитесь к файлу .Fla и в панели свойств добавьте «Main» в поле Class, чтобы сделать этот класс документа.

Теперь вы можете выбрать свою любимую цветовую палитру или цветовую гамму и реализовать ее в настраиваемой палитре цветов, разработанной в ActionScript 3.0. Попытайся!

Надеюсь, вам понравился этот рассказ, спасибо за чтение!