Дострочное пересдача экзамена
|
Привязка динамики к времени и кадрам
Что будет изучаться
В этом уроке:
- Как использовать во Flash-проектах элементы с отсчетом времени
- Создание и применение объекта Date для отображения текущей даты
- Применение функции tTimer() для точного отсчета времени – на примере Flash-проекта с таймером и будильником
- Управление монтажным столом динамически с помощью кнопок воспроизведения, остановки, перемотки вперед и назад
- Создание индикатора выполнения, отсчитывающего ход загрузки в процентах
Часть проекта Make My Day, который мы с вами построим в этом уроке.
Время выполнения
На выполнение этого урока требуется примерно один час.
Файлы урока
Файлы-носители:
Нет
Стартовые файлы:
Lesson15/Assets/makeMyDay1.fla Lesson15/Assets/preloader1.fla
Законченные проекты:
makeMyDay4.fla preloader2.fla
Бонус:
preloaderBytes.fla
Использование отсчета времени во FLASH
Для измерения времени во Flash-проектах имеется несколько методов. Наиболее употребительны следующие:
- Объект Date. Встроенный объект Flash; позволяет работать с датами (день, месяц, год).
- Функция getTimer(). Специальная функция Flash; позволяет вести отсчет времени в миллисекундах.
- Кадры. Кадр – наиболее употребительная "единица времени" во Flash, ведь именно отсчет кадров лежит в основе воспроизведения анимаций, звуков, видеороликов и т.п. Перемещение от текущего кадра к следующему (или предыдущему) представляет собой развитие проекта во времени (в прямом или обратном направлении).
Используя эти элементы, вы можете снабдить свой проект следующими возможностями:
- Проигрывание в прямом или обратном направлении, в зависимости от действий пользователя
- Реакция проекта на текущую дату, время или номер кадра
- Отображение информации о ходе загрузки (например, в процентах)
- И многое другое
В ActionScript имеется еще один специальный инструмент – setInterval(), позволяющий вызывать какую-либо функцию раз за разом с определенным интервалом (измеряемым в миллисекундах). Для примера рассмотрим такой скрипт:
function rotateClip() { myMovieClip._rotation += 10; } setInterval (rotateClip, 1500);
В первых трех строках описана функция. Затем следует действие setInterval(), вызывающее функцию rotateClip() каждые полторы секунды (1000 миллисекунд = 1 секунде).
Если вызываемой функции требуется передать значения аргументов, они просто добавляются в качестве параметров действия setInterval():
setInterval (updateMessageFunction, 2000, "Hello", arg2, arg3);
Действие setInterval() можно включать и отключать – для этого следует "присвоить" ему имя переменной, как в этом примере:
myVariable = setInterval (rotateClip, 1500);
Тем самым имя myVariable назначается данному действию setInterval(). Теперь, чтобы прекратить выполнение действия setInterval(), достаточно использовать следующую команду:
delete myVariable;
Действие setInterval() можно инициировать в любое время, например, вставив его вызов в какую-либо функцию. В следующем уроке мы с вами применим это действие для создания вращающихся рекламных баннеров.
Определение текущего времени и даты
Все мы пользуемся календарем; многие вообще не представляют себе, как можно без него обойтись – ведь нужно планировать свои дела на будущее и т.д.. Во Flash информация о календарной дате тоже может пригодиться – чтобы показать ее пользователю, или выполнить в определенный день некие специфические действия, или создать таймер обратного отсчета, да мало ли для чего еще.
Чтобы использовать во Flash календарную дату, необходимо создать экземпляр объекта Date:
myDate = new Date(year, month, date);
Эта строка скрипта создает новый объект Date под именем myDate. Параметры в скобках связывают этот объект с определенной датой. Например:
myDate = new Date(66, 6, 27);
Этим скриптом будет создан новый объект Date, связанный с 27 июля 1966 года. Первый параметр определяет год, второй – месяц, третий – день. Кстати, не удивляйтесь, тут нет никаких опечаток, хотя июль – седьмой месяц, а в скрипте указано 6. Дело в том, что в ActionScript месяцы и дни недели обозначаются числами, причем нумерация начинается с нуля. Таким образом, январь – "нулевой" месяц, февраль – "первый", март – "второй", и так до "одиннадцатого" – декабря. Подобным же образом, неделя начинается с "нулевого" дня – воскресенья, затем идет понедельник и так далее. В следующем упражнении мы продемонстрируем, в чем состоит удобство этой системы нумерации.
Примечание Числа месяцев и годы имеют истинные значения. Так, 66 соответствует 1966 году, а 27 – 27-му дню месяца.
Совет Список параметров создаваемого объекта можно продолжить, указав час, минуту, секунду и миллисекунду, если в вашем приложении нужна такая точность.
Если нужно создать объект Date, содержащий текущую дату и время (по системным часам компьютера), достаточно просто не указывать параметры, оставив скобки конструктора объекта пустыми. Например:
myDate = new Date();
После того, как объект Data создан, можно извлечь из него любую информацию о хранящейся в нем дате при помощи соответствующих методов. Возьмем предыдущий пример – объект, содержащий текущую системную дату. Чтобы выяснить, какой сейчас месяц, мы используем следующий синтаксис:
currentMonth = myDate.getMonth();
После выполнения этой строки переменная currentMonth получит числовое значение, например, 5 – это будет означать месяц июнь. Чтобы узнать день недели, используем другой метод:
currentDay = myDate.getDay();
После выполнения этой строки переменная currentDay получит числовое значение, например, 4, что соответствует четвергу.
Примечание Проект может содержать несколько объектов Data, предназначенных для разных целей.