
- •Основы языка ActionScript 2.0 Для чего нужен Actionscript?
- •События
- •Действия
- •Операторы
- •Ключевые слова
- •Фигурные скобки
- •Точка с запятой
- •Кавычки
- •Комментарии
- •Отступы и пробелы
- •Переменные Объявление
- •Видимость переменных
- •Присваивание
- •Объекты
- •Условные операторы
- •Цикл с переменной
- •Циклы с условием
- •Перечисление свойств
- •Управление циклом
- •Лабораторная работа №1 «Знакомство с ActionScript» Панель Actions
- •Инструменты работы с кодом
- •Управление проигрыванием. Кнопки Команды управления
- •Скопируйте файл ship.Fla из папки лр1 в свою папку и в дальнейшем работайте только с ним!
- •Реакции на события
- •Метки кадров
- •Адреса: дети, родители и корень
- •Абсолютные адреса
- •Относительные адреса
- •Индивидуальное задание
- •Лабораторная работа №2 «Свойства и события клипа»
- •Свойства
- •Типы объектов
- •Обработчики событий
- •Применение события клипа
- •Присутствие: onClipEvent (load)
- •Отсутствие: onClipEvent (unLoad)
- •Движущая сила: onClipEvent (enterFrame)
- •Перемещение: onClipEvent (mouseMove)
- •Применение методов как обработчиков событий
- •Свойства объектов
- •События клипа
- •События мыши
- •Перетаскивание
- •События клипа
- •Отличие кнопки от клипа
- •Обработка событий мыши и клавиатуры
- •Функции
- •Типы функций
- •Защита паролем
- •Индивидуальное задание
- •Лабораторная работа №3 «Использование объектов среды Flash» Глобальный объект Key
- •Самостоятельное задание
- •Работа с текстом (String, Selection) Объект String — строка
- •Объект Selection
- •Использование объекта Color
- •Массивы Основные понятия
- •Копирование
- •Многомерные массивы
- •Методы для работы с массивами
- •Работа с массивами
- •Дата и время Объект Date
- •Периодический вызов функции
- •Индивидуальное задание
- •Лабораторная работа № 4 «Организация одномерного движения объектов» Математические функции
- •Одномерное движение
- •Движение на плоскости Равномерное движение
- •Неравномерное движение
- •Организация отскока объектов Одномерное движение
- •Индивидуальное задание
- •Лабораторная работа № 5«Организация движения объектов по наклонной плоскости»
- •Векторы
- •Отскок от наклонной плоскости
- •Шарик в кольце
- •Маятник
- •Загрузка символа из библиотеки
- •Определение границ клипа
- •Точка и клип Вторая форма hitTest
- •Трассировка растровых рисунков
- •Точки вдоль границы
- •Сложная фигура и клип Два подхода
- •Цикл по всем дочерних объектов
- •Локальные и глобальные координаты
- •Обработка события для звука
- •Загрузка фильмов
- •Использование Переменных
- •Локальные переменные
- •Типы функций
- •Обработчики событий
- •Описание проекта
- •Загрузка Flash-фильмов
- •Работа с рисунками
- •Увеличение рисунка
- •Маски клипов
- •Звуковые файлы
- •Баннеры
- •Компоненты Обзор
- •Текстовые поля
- •Форматирование
- •Текст-ссылка
- •Работа с базой пользователей
- •Регистрация
- •Радиокнопки
- •Выпадающий список
- •Выключатели
- •Формат компонентов
- •Добавление пользователя
- •Индивидуальное задание
- •Лабораторная работа № 9 «Рисование из программы»
- •Отрезки
- •Заливки Одноцветная заливка
- •Добавление методов к MovieClip
- •Градиентная заливка
- •Квадраты
- •Двойной щелчок
- •Текстовое поле
Дата и время Объект Date
В этом проекте мы изучим средства для работы с датами и временем:
объект Date (дата);
функцию getTimer() (получить время таймера).
В результате будет построен ролик, который показывает сегодняшнюю дату, день недели и время, а также может служить будильником.
Создать новый объект класса Date можно так:
d = new Date(2007, 5, 11);
Первое число — год, второе — номер месяца, третье — число. Эта дата — 11 июня 2007 года. Здесь нет ошибки, номера месяцев начинаются с нуля, поэтому месяц 5 в программе Flash — это июнь.
Если параметры не используются:
today = new Date();
создается объект с сегодняшней датой.
С помощью методов объекта Date можно определить год, месяц, число и день недели:
today.getFullYear() — год;
today.getMonth() — месяц;
today.getDate() — число;
today.getDay() — день недели;
today.getHours() — часы;
today.getMinutes() — минуты;
today.getSeconds() — секунды.
Дни недели, так же, как и месяцы, нумеруются с нуля, причем неделя начинается с воскресенья (день 0), понедельник имеет номер 1 и т.д.
Скопируйте clock.fla в свою папку. Добавьте динамические текстовые поля (Dynamic Text) для вывода дня недели, числа, месяца года так, как на образце. Дайте им имена day, date, month и year, установите выравнивание по центру, выберите цвет и размер шрифта.
Day
Date
Month
Year
Добавьте слой Программа и в первом кадре введите код
stop();
today = new Date();
weekDays = ["воскресенье", "понедельник", "вторник",
"среда", "четверг", "пятница", "суббота"];
months = ["января", "февраля", "марта", "апреля",
"мая", "июня", "июля", "августа", "сентября",
"октября", "ноября", "декабря"];
day.text = weekDays[today.getDay()];
date.text = today.getDate();
month.text = months[today.getMonth()];
year.text = today.getFullYear();
Проверьте работу фильма.
В первой строчке мы остановили проигрывание, поскольку все изменения выполняются из программы. Затем в массивы weekDays и months записаны названия дней недели и месяцев (учитывая, что неделя у американцев начинается с воскресенья).
Затем в текстовые поля записываются данные сегодняшнего дня, причем некоторые из них выбираются из массивов.
С выводом времени дело обстоит несколько сложнее, его надо обновлять раз в секунду. Сначала добавим текстовое поле и напишем функцию, которая должна выводить в него время.
Добавьте текстовое поле под листом календаря и дайте ему кодовое имя time. В код кадра 1 добавьте функцию
function showTime() {
function str2(n) {
var s = String(n);
if (n<10) {
s = "0"+s;
}
return s;
}
today = new Date();
h = today.getHours();
m = today.getMinutes();
s = today.getSeconds();
time.text = str2(h)+":"+str2(m)+":"+str2(s);
}
Эта функция содержит внутреннюю функцию str2, которая принимает целое число n и переводит его в строку с помощью функции String. Затем, если число было меньше 10, к строке спереди добавляется ноль. Это сделано затем, чтобы, скажем, время 5 часов 3 минуты и 2 секунды изображались как 05:03:02, а не 5:3:2.
В основной части функции создается новый объект Date, содержащий текущую дату и время. С помощью методов getHours, getMinutes и getSeconds из него извлекаются часы, минуты и секунды. Далее они переводятся в символьный вид с помощью функции str2 и объединенная строка записывается в свойство text поля time. Функцию showTime надо вызывать периодически с интервалом не менее 1 секунды. В среде Flash есть такое средство.
Добавьте к коду кадра 1 строчку
setInterval ( showTime, 200 );
и проверьте работу клипа.
Первый параметр функции setInterval — это функция, которую надо вызывать, а второй — интервал между вызовами в миллисекундах.
Таймер
Добавьте на поле четыре надписи (Static Text): время, сек, повторить и раз, а также два поля ввода (Input Text) с именами alarmTime (время сигнала) и loops (повторы). Добавьте в нужное место кнопку Пуск из библиотеки.
В кадр 1 слоя Программа добавьте присвоение начальных значений:
alarmTime.text = "10";
loops.text = "1";
Дайте звукам из библиотеки имена tick (тиканье) и alarm (будильник). Для этого надо выбрать пункт Linkage... из контекстного меню. В появившемся окне отметьте флажки Export for ActionScript и Export in first frame, введите имя звука в поле Identifier.
Для отслеживания времени будем использовать внутренний таймер. Вызов функции
t = getTimer();
записывает в переменную t количество миллисекунд, прошедшее с начала проигрывания фильма. Для будильника нам нужна разница между текущим временем и временем начала отсчета, которое мы запомним в специальной переменной startTime.
В другой переменной, alarmOn будем запоминать состояний будильника (включен или выключен). Теперь можно написать код для кнопки: при ее нажатии включается будильник и запоминается время начала отсчета.
Добавьте код обработчика для кнопки:
on (release) {
clock.alarmOn = true;
clock.startTime = getTimer();
}
Остальная работа выполняется клипом clock: вращение стрелки, тиканье раз в секунду и выдача сигнала будильника.
Добавьте к клипу-секундомеру код обработчика enterFrame:
onClipEvent (enterFrame) {
if ( !alarmOn ) return;
t = Number(_root.alarmTime.text);
diff = Math.round((getTimer()-startTime)/1000);
if (hand._rotation != diff*6) {
hand._rotation = diff*6;
tick = new Sound();
tick.attachSound("tick");
tick.start(0,1);
}
if (diff == t) Alarm();
}
Если будильник не включили, ничего делать не надо и функция заканчивает работу.
В переменную t записывается числовое значение установленного времени, для перевода из символьной строки в число используется функция Number.
Разница между текущим и стартовым временем переводится в секунды из миллисекунд (делением на 1000) и округляется до ближайшего целого числа с помощью функции Math.round, которая относится к объекту Math (математика).
Если вспомнить, что за 1 секунду стрелка должна повернуться на 6(=360/60) градусов, то нужный угол поворота стрелки равен diff*6. Если стрелку надо «довернуть», изменяем ее свойство _rotation и 1 раз проигрываем звук tick из библиотеки.
Если разница diff совпала с установленным временем t, вызывается функция Alarm, которую мы сейчас напишем. В ней надо отключить будильник, вернуть стрелку в исходное положение и проиграть звук alarm из библиотеки нужное число раз.
Введите код обработчика события load для клипа:
onClipEvent (load) {
function Alarm() {
alarmOn = false;
hand._rotation = 0;
snd = new Sound();
snd.attachSound("alarm");
snd.start(0,_root.loops.text);
}
}
Проверьте работу будильника.