Опубликован: 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 и введите следующий скрипт:

Галина Кузнецова
Галина Кузнецова

Добрый день.

Можно ли получить среду Flash для обучения бесплатно?

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