Опубликован: 04.11.2006 | Уровень: специалист | Доступ: платный
Урок 15:

Привязка динамики к времени и кадрам

< Урок 14 || Урок 15: 12345 || Урок 16 >
Аннотация: Созданный в Macromedia Flash фильм может реагировать не только на действия пользователя (перемещения мыши, нажатия кнопок и т.п.). События в фильме могут происходить по прошествии определенного времени или какого-то числа кадров – то есть независимо от пользователя. Комбинируя элементы, основанные на таких событиях с интерактивными элементами, можно создавать еще более динамичные и интересные проекты. В этом уроке вы узнаете, как работает во Flash отсчет времени и кадров; мы продемонстрируем вам способы применения того и другого в реальных проектах.
Внимание! Для работы с этим уроком необходимы учебные файлы, которые Вы можете загрузить здесь.

Что будет изучаться

В этом уроке:

  • Как использовать во 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, предназначенных для разных целей.

< Урок 14 || Урок 15: 12345 || Урок 16 >
Салтанат Бектегенова
Салтанат Бектегенова

Дострочное пересдача экзамена

 

Евгений Стародубцев
Евгений Стародубцев

Вот задание:

7. Открыв панель Действия (Actions) и установив ее в Экспертный режим(Expert Mode), выделите кадр 1 слоя Actions и введите следующий скрипт:

Евгения Дегтяренко
Евгения Дегтяренко
Украина, Запорожье
Анна Елисеева
Анна Елисеева
Россия, Великий Новгород, Ногородский государственный университет имени Ярослава Мудрого, 2003