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

Применение обработчиков событий

Применение события клипа

Если в сцене присутствует экземпляр фильма-символа с присоединенными к нему скриптами, возможности такой сцены в плане изменений внешнего вида, функциональности, способности к взаимодействию с пользователем можно значительно расширить посредством использования событий клипа. Такие события позволяют запускать действия при появлении экземпляра на сцене или исчезновении с нее, при перемещении по сцене мыши и так далее.

Далее приводится описание различных событий клипа наряду с аналогиями из реального мира, которые можно сопоставить этим событиям. При этом следует помнить, что скрипты, обрабатывающие события клипа можно присоединять только к экземплярам фильмов-символов.

Присутствие: onClipEvent (load)

Когда кто-то (или что-то) появляется в каком-либо месте (помещении), это событие всегда имеет некоторый эффект: меняется поведение людей, так или иначе изменяется окружающая обстановка или среда. Даже сама персона (или вещь) может измениться в результате своего появления именно в этом помещении. Данный обработчик события вызывает примерно такой отклик, запуская некий скрипт в момент появления экземпляра фильма-символа на сцене – полезно для выполнения инициализации фильма-символа, для программирования как воздействия экземпляра на сцену, так и воздействия сцены на него.

Отсутствие: onClipEvent (unLoad)

Раз фильм-символ может изменить сцену (или она его) при появлении, значит, что-то может произойти и при его исчезновении. Используйте этот обработчик для запуска скрипта в момент исчезновения фильма-символа из сцены.

Движущая сила, энергия: onClipEvent (enterFrame)

Если объект снабжен энергией, движущей силой, это значит, что он способен выполнять какие-то действия в течение некоторого времени. Взять, к примеру, часы. Без движущей силы пружины они остаются неподвижными и бесполезными. А если их завести, стрелки побегут по циферблату, показывая время. Данный обработчик события применяется для постоянного повторения какого-либо скрипта – с частотой воспроизведения кадров фильма. Если частота составляет 20 кадров в секунду, то и скрипт этого обработчика будет выполняться по 20 раз в секунду. Для этого обработчика существует множество полезнейших применений, мы рассмотрим их в этом курсе.

Перемещение: onClipEvent (mouseMove)

Этот обработчик вы можете представить себе как детектор движения. Если в сцене присутствует экземпляр фильма-символа с присоединенным к нему таким обработчиком, набор действий будет выполняться каждый раз, когда пользователь перемещает мышь (хотя бы на один пиксель). Это позволяет программировать интерактивное взаимодействие, связанное с перемещением – например, определять направление перемещения, текущую позицию указателя и другое.

Взаимодействие с компьютером: onClipEvent (mouseDown), onClipEvent (mouseUp), onClipEvent (keyDown), onClipEvent (keyUp)

Поскольку мышь и клавиатура предназначены лишь для взаимодействия пользователя с компьютером, для этих событий эквивалентов в реальном мире не найти. Зато они позволяют выполнять скрипты, если нажата (или отпущена) какая-либо клавиша или кнопка мыши. Хотя эти события очень похожи на описанные ранее события мыши – press, release и keyPress, на самом деле они помощнее. При помощи обработчиков событий клипа keyUp и keyDown можно програмировать комбинации клавиш для быстрого выбора команд вашего приложения. А событие мыши keyPress позволяет назначить действия только для одной клавиши. События клипа mouseUp и mouseDown отличаются от событий мыши press и release тем, что последние запускают скрипт только тогда, когда пользователь щелкает мышью непосредственно на кнопке, события же mouseUp и mouseDown реагируют на нажатие или отпускание кнопки мыши где угодно в пределах сцены.

Получение инструкций: onClipEvent (data)

В реальной жизни неполное инструктирование может вызвать всевозможные проблемы. То же самое и во Flash. Поскольку Flash позволяет загружать в экземпляр фильма-символа из внешних источников различные данные (переменные, файлы SWF и JPG), обработчик этого события играет жизненно важную роль для того, чтобы присоединенный к экземпляру скрипт выполнялся только после того, как данные из источника будут загружены полностью. Таким образом мы можем предупредить возникновение ошибок из-за незавершенных инструкций. Также этот обработчик можно применять для повторного выполнения действий (обновления), если данные загружаются в клип неоднократно.

Визуальное представление событий клипа. Стрелка, направленная вниз, означает нажатие кнопки мыши; стрелка вверх – отпускание. Звездочка обозначает наступление события.

В следующем упражнении мы создадим проект, имитирующий действия воришки. От факта присутствия или отсутствия вора будет зависеть воспроизведение сцены, а поведение самого вора будет запрограммировано так, чтобы оно соответствовало обстановке; все это мы сделаем при помощи событий клипа.

  1. Откройте файл ClipEvents1.fla из папки Lesson02/Assets. Откройте инспектор Параметры (Property).

Данный проект содержит единственную сцену, состоящую из семи слоев, названных в соответствии с содержимым. Обратите внимание на два кадра с метками: кадр с меткой Clear означает отсутствие вора на сцене, кадр с меткой Burglar – присутствие (можете, переместив курсор воспроизведения, составить себе представление об этих двух половинках фильма). Изображение воришки на самом деле представляет собой экземпляр фильма-символа с именем burglar, который и будет содержать большую часть скриптов, отвечающих за интерактивность нашего фильма. Экземпляр фильма-символа burglar – единственный элемент фильма, который появляется и исчезает при переходе между половинками фильма, обозначенными кадрами, имеющими метки; остальные элементы присутствуют постоянно. Давайте их рассмотрим.

В правом верхнем углу сцены – четыре кнопки. Верхняя, с изображением нашего взломщика и интернациональным знаком запрета (красный круг и косая линия) будет перемещать наш фильм к кадру с меткой Clear, то есть "удалять" вора из сцены. Три другие кнопки – Tiny, Small и Normal – будут заведовать размером нашего вора.

Ниже этих кнопок имеется некое изображение в виде светло-зеленой окружности. Это – экземпляр фильма-символа с именем timer. Мы запрограммируем timer так, чтобы он "отсчитывал время", пока взломщик находится на сцене.

Под фильмом-символом timer имеется текстовое поле с именем timeAmount. Здесь, пока вор на сцене, будет отображаться увеличивающееся число – тоже для имитации отсчета времени.

Ниже этого текстового поля – еще два: рядом с одним стоит буква X, рядом с другим – Y. Поскольку мы собираемся запрограммировать вора так, чтобы он перемещался вслед за мышью, в этих текстовых полях (с именами mouseXPosition и mouseYPosition ) будут отображаться текущие координаты фильма-символа burglar по осям X и Y.

В самом низу расположено последнее наше текстовое поле. Поле названо message, оно будет отображать состояние окружающей обстановки ("Все чисто", "ТРЕВОГА!" и т.п.).

В сцене осталось лишь два элемента, которые мы не рассмотрели – оба они являются экземплярами фильмов-символов и с ними стоит познакомиться поближе.

  1. Сделайте двойной щелчок на маленьком кружке в левой верхней части рабочей области, прямо над сценой, чтобы открыть данный фильм-символ для редактирования на месте.

Имя экземпляра этого фильма-символа – siren. На его монтажном столе вы обнаружите три слоя и два кадра с метками. Кадр, соответствующий метке On, содержит звукозапись – это звук полицейской сирены. Как только монтажный стол этого фильма окажется на этом кадре, начнется воспроизведение звука. Использоваться это будет, естественно, для имитации тревожного сигнала. В кадре с меткой Off никакой звукозаписи нет; если монтажный стол окажется на этом кадре, звук сирены прекратится.

Салтанат Бектегенова
Салтанат Бектегенова

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

 

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

Вот задание:

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

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