В этом уроке вы узнаете, как создать вращающееся колесо с использованием Flash и AS3, с интерфейсом, который подходит как для устройств на основе мыши, так и на сенсорных устройствах.
Окончательный результат предварительного просмотра
Давайте посмотрим на конечный результат, к которому мы будем стремиться:
Нажмите и перетащите мышь вертикально, чтобы вращать колесо; Чем длиннее линия, которую вы перетаскиваете, тем быстрее будет вращаться колесо! Как только он остановится, цветная полоса внизу покажет цвет, на котором приземлилось колесо.
Шаг 1: Краткий обзор
Используя готовые графические элементы, мы создадим красочный интерфейс, который будет работать на нескольких классах ActionScript 3.
Пользователь сможет вращать колесо, используя жест перетаскивания, представленный линией на экране; более высокая линия будет быстрее вращаться.
Шаг 2: Настройки документа Flash
Откройте Flash и создайте документ размером 500×300 пикселей. Установите частоту кадров 24 кадра в секунду.
Шаг 3: Интерфейс
Будет отображен красочный красивый интерфейс, состоящий из нескольких фигур, мувиклипов и многого другого.
Простые формы были созданы с использованием инструментов рисования Flash Pro, и, поскольку их легко дублировать, я не буду объяснять их создание. Убедитесь, что точка вращения колеса находится в центре.
Вы всегда можете посмотреть FLA в исходных файлах загрузки .
Шаг 4: Имена экземпляров
На изображении выше показаны имена экземпляров различных видеороликов. Обратите особое внимание на wheel.p MovieClips; это маленькие черные линии, которые разделяют цвета в колесе и находятся внутри wheel MovieClip. Они называются от p1 до p10 часовой стрелке.
Шаг 5: ТвинМакс
Мы будем использовать другой движок анимации движения, отличный от стандартного, включенного во Flash; это значительно облегчит переход colorMC символа colorMC .
Вы можете скачать TweenMax с веб-сайта Greensock .
Шаг 6: Установите основной класс
Добавьте имя класса Main в поле Class в разделе Publish панели Properties, чтобы связать FLA с классом Main .
Шаг 7. Создайте новый класс ActionScript
Создайте новый (Cmd + N) класс ActionScript 3.0 и сохраните его как Main.as в папке вашего класса.
Шаг 8: Структура класса
Создайте базовую структуру классов, чтобы начать писать код.
|
01
02
03
04
05
06
07
08
09
10
11
12
|
package
{
import flash.display.Sprite;
public class Main extends Sprite
{
public function Main():void
{
// constructor code
}
}
}
|
Шаг 9: Обязательные классы
Это классы, которые нам нужно импортировать, чтобы наш класс работал. Директива import делает внешние классы и пакеты доступными для вашего кода.
|
1
2
3
4
5
|
import flash.display.Sprite;
import flash.display.Shape;
import flash.events.MouseEvent;
import flash.events.Event;
import com.greensock.TweenMax;
|
Шаг 10: переменные
Эти переменные мы будем использовать; Прочитайте комментарии в коде, чтобы узнать о них больше:
|
1
2
3
4
|
private var speed:Number = 0;
private var paddles:Vector.<Sprite> = new Vector.<Sprite>();
private var line:Shape;
private var lastPaddle:String;
|
Шаг 11: Конструктор
Конструктор — это функция, которая запускается, когда объект создается из класса, и первая, которая выполняется при создании экземпляра объекта. Так как это наш класс документа, он будет запущен, как только загрузится SWF.
|
1
2
3
4
|
public final function Main():void
{
//code…
}
|
Шаг 12: Весло Вектор
Сначала мы добавляем различные манипуляторы MovieClips к вектору и добавляем слушатели — мы напишем функцию listeners() далее.
|
1
2
3
4
5
|
public final function Main():void
{
paddles.push(wheel.p1, wheel.p2, wheel.p3, wheel.p4, wheel.p5, wheel.p6, wheel.p7, wheel.p8, wheel.p9, wheel.p10);
listeners(‘add’);
}
|
Шаг 13: Слушатели
Эта функция добавит или удалит слушателей в соответствии с параметром. Слушатели мыши настроены на рисование линии, которая будет управлять колесом.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
private final function listeners(action:String):void
{
if(action == ‘add’)
{
stage.addEventListener(MouseEvent.MOUSE_DOWN, startDraw);
stage.addEventListener(MouseEvent.MOUSE_UP, spinWheel);
}
else
{
stage.removeEventListener(MouseEvent.MOUSE_DOWN, startDraw);
stage.removeEventListener(MouseEvent.MOUSE_UP, spinWheel);
}
}
|
Шаг 14: Линия движения
Следующая функция начинает создавать линию на основе текущей позиции мыши и помещает ее на сцену. Это срабатывает при щелчке мышью.
|
1
2
3
4
5
6
7
8
9
|
private final function startDraw(e:MouseEvent):void
{
line = new Shape();
addChild(line);
line.graphics.moveTo(mouseX, mouseY);
line.graphics.lineStyle(8, 0x000000, 0.3);//you can change the line color and style here
stage.addEventListener(MouseEvent.MOUSE_MOVE, drawLine);
}
|
Шаг 15: Нарисуй линию
Пока мышь перемещается, линия продолжается в этом направлении.
|
1
2
3
4
|
private final function drawLine(e:MouseEvent):void
{
line.graphics.lineTo(mouseX, mouseY);
}
|
Шаг 16: вращай колесо
Следующий код запускается при отпускании кнопки мыши, заканчивая строку. Слушатели рисования удаляются, чтобы избежать рисования нескольких линий, а скорость рассчитывается в соответствии с высотой линии. Наконец, вызывается событие EnterFrame для фактического вращения колеса.
|
01
02
03
04
05
06
07
08
09
10
11
|
private final function spinWheel(e:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, drawLine);
listeners(‘rm’);
speed = line.height * 0.1;
removeChild(line);
line = null;
stage.addEventListener(Event.ENTER_FRAME, spin);
}
|
Шаг 17: Поверните колесо
Это функция, которая вращает колесо и определяет его значение:
|
1
2
3
4
5
|
private final function spin(e:Event):void
{
/* Rotate Wheel */
wheel.rotationZ += speed;
|
Шаг 18: Определить ценность
Здесь мы определяем текущее значение колеса на основе последнего прикосновения к нему.
|
1
2
3
4
5
6
7
8
9
|
/* Detect Value */
for(var i:int = 0; i < 10; i++)
{
if(indicator.hArea.hitTestObject(paddles[i]))
{
lastPaddle = paddles[i].name;
}
}
|
Шаг 19: Уменьшить скорость
Скорость колеса уменьшается каждый кадр, чтобы в конечном итоге остановить вращение.
|
1
2
3
|
/* Decrease speed */
speed -= 0.1;
|
Шаг 20: сброс колеса
Все значения сбрасываются, когда колесо останавливается. Вызывается функция, которая запускает действие в соответствии с конечным значением.
|
01
02
03
04
05
06
07
08
09
10
|
/* Remove listener and reset speed when wheel stops */
if(speed <= 0)
{
stage.removeEventListener(Event.ENTER_FRAME, spin);
speed = 0;
setBarColor(lastPaddle);
listeners(‘add’);
}
}
|
Шаг 21: Установите цвет панели
Эта функция будет запускать пользовательское действие в соответствии с последним значением колеса. В этом случае он меняет цвет нижней панели, но вы можете сделать что-нибудь еще.
|
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
29
30
31
32
33
34
35
36
|
function setBarColor(action:String):void
{
switch(action)
{
case ‘p1’:
TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xF15D5D, tintAmount:1}});
break;
case ‘p2’:
TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xC06CA8, tintAmount:1}});
break;
case ‘p3’:
TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x644D9B, tintAmount:1}});
break;
case ‘p4’:
TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x5E98C6, tintAmount:1}});
break;
case ‘p5’:
TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x4789C2, tintAmount:1}});
break;
case ‘p6’:
TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x55C4CB, tintAmount:1}});
break;
case ‘p7’:
TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x57BC80, tintAmount:1}});
break;
case ‘p8’:
TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x90CC6C, tintAmount:1}});
break;
case ‘p9’:
TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xEBE666, tintAmount:1}});
break;
case ‘p10’:
TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xF29C69, tintAmount:1}});
break;
}
}
|
Вывод
Измените код, чтобы выполнить свои собственные действия!
Надеюсь, вам понравился этот урок, спасибо за чтение!





