Статьи

Создание флажка «Вдохновленный переключатель iPhone» с использованием Flash и ActionScript 3.0

CheckBox — это элемент графического интерфейса пользователя, который позволяет пользователю сделать один или несколько вариантов выбора из нескольких вариантов.

В этом уроке мы создадим флажок Switch, основанный на графическом пользовательском интерфейсе iPhone. Читайте дальше, чтобы узнать как!




Используя инструменты рисования Flash, мы создадим векторный переключатель, который будет контролироваться классами. Один класс позаботится обо всем поведении переключателя, а другой класс просто проверит значение переключателя. Пошли!

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

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

«»

Теперь мы создадим графику переключения.

Выберите инструмент Primitive Rectangle Tool (R) и создайте прямоугольник размером 280×80 пикселей, заполнив его линейным градиентом: # 505052, # ACADB1.

Используйте инструмент «Преобразование градиента», чтобы повернуть градиент по горизонтали и изменить радиус угла (панель свойств) на 10.

Мы нарисуем два фона для Switch, фон OFF и фон ON.

Дублируйте предыдущую форму и измените ее размер на 276×76 пикселей. Измените линейный граньент на # 9A9A9A, # F4F3F6 и переместите последний селектор цвета (Панель цветов) на половину вдоль шкалы.

Выберите инструмент Text Tool (T) и создайте статическое текстовое поле. Напишите «OFF» и поместите его справа от фона.

Я использовал Helvetica Neue Bold, 48 pt, # 8C8C8C.

Теперь мы добавим кнопку, которую можно перетаскивать, чтобы изменить значение Switch.

Используйте Rectangle Tool, чтобы создать прямоугольник размером 120×80 пикселей и залейте его # A19FA0, установите радиус угла равным 10.

Дублируйте форму и измените ее размер до 116×76 пикселей, заполните ее #FCFCFE.

Чтобы окончательно коснуться кнопки, повторите процесс и заполните форму линейным градиентом # D7D7D7, #FCFCFE. Используйте Gradient Transform Tool, чтобы вращать заливку.

Дублируйте границу и фон OFF, удалите текст и измените градиент границы на # 0D4372, # 6193D2.

Затем измените градиент фона на # 0C68B5, # 479FF9, # 6DB0F6.

Поместите форму границы кнопки с правой стороны.

Разбейте (Cmd + B) формы, чтобы разрезать их.

Используйте тот же текстовый формат, чтобы добавить текст «ВКЛ» на фон.

Преобразуйте Draggable Button в MovieClip и назовите его «area». Как вы можете себе представить, это будет та область, которая будет перетаскиваться для изменения значения Switch.

Убедитесь, что точка регистрации расположена так же, как на изображениях.

Выделите все фигуры, включая мувиклип, и снова конвертируйте их, назовите результат «слайдер».

Используйте любую из фигурных рамок для создания другого мувиклипа, это будет маска, которая будет скрывать часть графики. Назовите это «мск».

Преобразуйте все в MovieClip еще раз и дважды щелкните по нему.

Создайте новый слой, затем обрежьте и вставьте на него клип маску. Щелкните правой кнопкой мыши слой маски и выберите опцию «Маска».

Это закончит всю графику. Теперь ваш коммутатор должен выглядеть следующим образом (обратите внимание на точку регистрации):

Откройте библиотеку и щелкните правой кнопкой мыши свой символ переключателя. Выберите Свойства, отметьте поле «Экспорт для ActionScript» и напишите «Переключить» в качестве имени класса.

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

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

1
2
3
4
5
6
7
package
{
    import fl.transitions.Tween;
    import fl.transitions.easing.Strong;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.geom.Rectangle;

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

1
2
3
4
public class Switch extends Sprite
{
    private var tween:Tween;
    public var stat:Boolean = false;

Функция конструктора. Эта функция добавляет слушателей.

1
2
3
4
5
public function Switch():void
{
    slider.area.addEventListener(MouseEvent.MOUSE_DOWN, switchDrag);
    slider.area.addEventListener(MouseEvent.MOUSE_UP, checkPosition);
}

Эта функция обрабатывает перетаскивание кнопки в зависимости от ее положения.

01
02
03
04
05
06
07
08
09
10
11
private function switchDrag(e:MouseEvent):void
{
    if (! stat) //If Switch is OFF, we can drag to the right
    {
        e.target.parent.startDrag(true, new Rectangle(0, 0, e.target.parent.parent.msk.width/1.75, 0));
    }
    else
    {
        e.target.parent.startDrag(true, new Rectangle(e.target.parent.parent.msk.width/1.75, 0, -e.target.parent.parent.msk.width/1.75, 0));
    }
}

Этот код проверяет положение перетаскиваемой кнопки. В зависимости от его значения он возвращается в исходное положение или остается в новом.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private function checkPosition(e:MouseEvent):void
{
    e.target.parent.stopDrag();
 
    if (e.target.parent.x >= 140)
    {
        e.target.parent.x = 160;
        stat = true;
    }
    else if (!stat && e.target.parent.x < 140)
    {
        tween = new Tween(e.target.parent,»x»,Strong.easeOut,e.target.parent.x,0,1,true);
        stat = false;
    }
 
    // OFF to ON
 
    if (e.target.parent.x <= 20)
    {
        e.target.parent.x = 0;
        stat = false;
    }
    else if (stat && e.target.parent.x > 20)
    {
        tween = new Tween(e.target.parent,»x»,Strong.easeOut,e.target.parent.x,160,1,true);
        stat = true;
    }
}

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package
{
    import Switch;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
     
    public class Main extends Sprite
    {
        public function Main():void
        {
            iSwitch.addEventListener(MouseEvent.MOUSE_UP, checkState);//iSwitch is an instance in the stage of the Switch class
        }
 
        private function checkState(e:MouseEvent):void
        {
            if(iSwitch.stat)
            {
                trace(«Switch is ON!»);
            }
            else
            {
                trace(«Switch is OFF!»);
            }
        }
    }
}

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

Вы создали полностью настраиваемый коммутатор для использования в ваших приложениях! Помните, что вы можете создавать свои собственные скины и добавлять множество дополнительных функций в состояния ON и OFF.

Спасибо за прочтение!