ActionScript 3.0 — очень мощный язык, способный создавать что угодно, от простых и легких утилит до полнофункциональных настольных приложений.
В этом выпуске мы собираемся создать что-то простое, простые и красивые цифровые часы во Flash.
Шаг 1: Краткий обзор
Используя объект Date и его свойства, мы получим день, часы, минуты и секунды и будем использовать TextFields на сцене для отображения полученных данных. Обновления будут обрабатываться таймером .
Шаг 2: Начало
Откройте Flash и создайте новый файл Flash (ActionScript 3).
Установите размер сцены 600×300 и добавьте радиальный фон от синего до черного (# 003030, # 000000).
Шаг 3: Светящийся текст
Мы собираемся добавить два динамических текстовых поля для каждого элемента, сначала мы поместим поля с жаром, чтобы получить эффект линий.
Выберите инструмент «Текст» и создайте текстовое поле размером 342×104 пикселей, используйте цвет # 00FAFF, щелкните параметр «Центр» на панели «Абзац» и выберите понравившийся шрифт. Я использовал DS-Digital курсив, 100pt.
Назовите его «clockGlow», добавьте несколько чисел, отцентрируйте его, чтобы использовать в качестве ориентира, и добавьте Glow Filter со следующими значениями:
У вас должно быть что-то вроде этого:
Повторите процесс с меньшим размером шрифта для дней и индикатора am / pm. Имена экземпляров — это название дня плюс слово «Glow», это будет «monGlow», «tueGlow» и т. Д. «AmpmGlow» для индикатора AM / PM.
Шаг 4: Экран линий
Мы нарисуем ряд линий, которые будут покрывать сцену, чтобы получить эффект ЖК-экрана.
Выберите инструмент «Прямоугольник» и создайте черную линию 600x1px, продублируйте ее (Cmd + D) и поместите ее ниже, оставляя пространство в 1px.
Повторяйте процесс, пока он не совпадет с высотой сцены. Вы закончите что-то вроде этого:
Преобразуйте экран линий в группу (Cmd + G) и отцентрируйте его на сцене.
Шаг 5: Четкий текст
Как вы можете видеть на последнем изображении, эффект линии распространяется по всему тексту. Мы хотим, чтобы он применялся только к свету, поэтому давайте добавим новый слой текста.
Поскольку этот текст точно такой же, который мы создали ранее (без фильтра свечения), мы можем просто скопировать текстовые поля и удалить фильтр свечения. Мы также удалим слово «Glow» из имен экземпляров.
Это завершит интерфейс.
Шаг 6: Время ActionScript
Создайте новый документ ActionScript и сохраните его как «Main.as».
Шаг 7: Обязательные классы
На этот раз нам понадобится всего несколько занятий.
1
2
3
4
5
|
package
{
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
|
Шаг 8: Расширение класса
Мы собираемся использовать специальные методы и свойства MovieClip, поэтому мы расширяем их с помощью класса MovieClip. Расширение с использованием класса Sprite не будет работать.
1
2
|
public class Main extends MovieClip
{
|
Шаг 9: переменные
Это переменные, которые мы будем использовать, объяснено в комментариях.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
/* A Date object used to get the day, and time */
var date:Date = new Date();
var day:int = date.day;
/* The time */
var hours:int = date.hours;
var minutes:* = date.minutes;
var seconds:* = date.seconds;
/* A Timer object that will handle the updates, executed every second */
var timer:Timer = new Timer(1000);
|
Шаг 10: Основная функция
Эта функция выполняется, когда класс загружен.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
public function Main():void
{
/* Prevents lag, since the timer is not executed until 1 second after starting the movie */
updateClock();
/* Hides all days text, these functions are explained later */
hideObjects(mon, monGlow, tue, tueGlow, wed, wedGlow, thu, thuGlow, fri, friGlow, sat, satGlow, sun, sunGlow);
/* Unhides the current day */
showCurrentDay();
/* Starts the timer */
timer.addEventListener(TimerEvent.TIMER, startClock);
timer.start();
}
|
Шаг 11: Функция часов
Это функция, которая обрабатывает часы. Он вызывается один раз в основной функции, затем каждую секунду в функции startClock.
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
37
38
39
|
private function updateClock():void
{
/* AM PM, if hours is greater than 11, that is 12 and 12 is PM */
if (hours>11)
{
ampm.text=»PM»;
ampmGlow.text=»PM»;
}
else
{
ampm.text=»AM»;
ampmGlow.text=»AM»;
}
/* Avoids 24 hour clock, if hours is greater than 12 (like 13) substracts 12 (so it is 1) */
if (hours>12)
{
hours-=12;
}
/* If number is just one digit, add a 0 to the left */
if (String(minutes).length<2)
{
minutes=»0″+minutes;
}
if (String(seconds).length<2)
{
seconds=»0″+seconds;
}
/* Set TextFields */
clock.text=hours+»:»+minutes+»:»+seconds;
clockGlow.text=hours+»:»+minutes+»:»+seconds;
}
|
Шаг 12: Скрыть функцию
Эта функция делает объекты невидимыми, мы используем параметр … rest для передачи любого количества параметров.
1
2
3
4
5
6
7
|
private function hideObjects(…targets)
{
for (var i:int = 0; i < targets.length; i++)
{
targets[i].visible=false;
}
}
|
Шаг 13: Текущий день
Этот оператор Switch будет проверять переменную дня, чтобы получить день и показать его.
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
|
private function showCurrentDay():void
{
switch (day)
{
case 0 :
sun.visible=true;
sunGlow.visible=true;
break;
case 1 :
mon.visible=true;
monGlow.visible=true;
break;
case 2 :
tue.visible=true;
tueGlow.visible=true;
break;
case 3 :
wed.visible=true;
wedGlow.visible=true;
break;
case 4 :
thu.visible=true;
thuGlow.visible=true;
break;
case 5 :
fri.visible=true;
friGlow.visible=true;
break;
case 6 :
sat.visible=true;
satGlow.visible=true;
break;
default :
trace(«Week day error»);
}
}
|
Шаг 14: Функция запуска
Эта функция обновляет объект Date для получения фактической даты и вызывает функцию updateClock для обновления текстовых полей.
01
02
03
04
05
06
07
08
09
10
|
private function startClock(e:TimerEvent):void
{
date = new Date();
hours=date.hours;
minutes=date.minutes;
seconds=date.seconds;
updateClock();
}
|
Шаг 15: Класс документа
Вернитесь к файлу .Fla и в панели свойств добавьте «Main» в поле Class, чтобы сделать этот класс документа.
Вывод
Как видите, эти цифровые часы довольно легко создавать и модифицировать. Поэкспериментируйте с классом дат, измените интерфейс и, возможно, добавьте больше функциональности!
Спасибо за прочтение.