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

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

Большинство событий мыши можно присоединить к фильму-символу

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

  • Чтобы фильм-символ работал как кнопка, достаточно присоединить к нему обработчик события мыши. В большинстве случаев невозможно присоединить к одному и тому же экземпляру и события мыши, и события клипа; однако заставить фильм-символ реагировать сразу на те и другие события все-таки можно – воспользовавшись обработчиками-методами (о них мы поговорим в этом уроке позже).
  • Экземпляр фильма-символа с назначенными событиями мыши трактуется Flash как кнопка, но при этом функциональность его как фильма-символа сохраняется.
  • Если для экземпляра фильма-символа назначены события мыши и он трактуется Flash как кнопка, то при наведении на него мыши указатель отображается в виде руки. Если вы хотите, чтобы вместо этого отображался обычный указатель, установите в значение false свойство экземпляра useHandCursor, привязав это к событию rollOver:
on(rollOver){
  this.useHandCursor = false;
}

Свойство useHandCursor применимо также и к экземплярам кнопок (см. далее).

  • То, что к фильмам-символам можно применять события мыши (как к кнопкам), не значит, что к экземплярам кнопок можно применять события клипа (об этом еще будет сказано в этом уроке).
  • Экземплярам кнопок теперь можно присваивать имена, они имеют свойства, похожие на свойства фильмов-символов (например, _alpha, _rotation, _y и так далее). Таким образом, присвоив экземпляру кнопки имя myButton, вы сможете изменить ее прозрачность действием myButton._alpha = 50.
  • Экземплярам кнопок можно присваивать имена – в результате они становятся объектами, подобными фильмам-символам, приобретя свойства и методы. Однако кнопки в любом случае не являются самостоятельными монтажными столами (каковыми являются фильмы-символы) – это важно помнить, используя при указании пути термин this. Например, если использовать следующий скрипт, то экземпляр фильма-символа повернется:
on(press){
  this._rotation = 30;
}

Однако если тот же скрипт назначить для кнопки, то повернется не сама кнопка, а ее "родитель" – монтажный стол, на котором она находится! Запомните эту концепцию: экземпляр фильма-символа всегда сам является монтажным столом, даже если к нему присоединены обработчики событий мыши и Flash трактует его как кнопку. Кнопка же, даже имея имя экземпляра, а значит, свойства и методы, остается лишь частью монтажного стола, на котором находится.

Вы можете спросить: раз фильмы-символы могут теперь работать как кнопки, при этом сохраняя свои функциональные возможности присущие фильмам-символам, зачем вообще использовать стандартные кнопки? Ну, главным образом потому, что символ-кнопка, с ее стандартными тремя состояниями – up, over и down (вверх, над, вниз) – позволяет гораздо быстрее и проще реализовать обычную кнопку. Так что если вам нужна просто кнопка, используйте экземпляр кнопки. Если же хотите снабдить кнопку какими-то "спецэффектами", тогда нужен фильм-символ с присоединенными событиями мыши.

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

  • По умолчанию область нажатия ( hit area ) для фильма-кнопки определяется его графическим содержимым, однако область нажатия можно в любой момент изменить при помощи свойства hitArea. Например, в следующем действии в качестве hitArea для экземпляра фильма-кнопки указывается другой фильм-символ:
myClipButton.hitArea = "_root.myHitClip";

Данное свойство доступно только для фильмов-символов, используемых в качестве кнопок, но не для стандартных кнопок.

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

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

Совет Часто в проектах, имеющих динамическую основу, многие действия необходимо бывает выполнить сразу же, как только начато воспроизведение. В этом процессе, известном как инициализация, обычно создаются элементы данных, определяются различные общие аспекты фильма. По этой причине разработчики зачастую присоединяют к кадру 1 основного монтажного стола очень много действий, необходимых для инициализационного процесса. Здесь объявляются переменные и массивы, описываются функции – в общем, все, что может понадобиться содержащимся в фильме скриптам сразу после начала воспроизведения.

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

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

Первым делом давайте посмотрим, что у нас на сцене.

Эта 200-кадровая сцена содержит шесть слоев (названных в соответствии с содержимым), пять текстовых полей, три кнопки и два фильма-символа. Воспроизведение фильма начнется с кадра 1 – на экране появится картинка и соответствующий текст. Мы поместим в кадр 200 действия, обуславливающие смену картинки и возврат монтажного стола к кадру 1, и этот процесс будет повторяться, сколько мы захотим. Поскольку наш фильм воспроизводится со скоростью 20 кадров в секунду, каждая картинка будет находиться на экране 10 секунд (200 кадров поделить на 20 кадров в секунду), а затем сменится. Если вы выделите малую картинку в левой части сцены и посмотрите в инспектор Параметры, то увидите, что это есть ни что иное, как экземпляр фильма-символа с именем pictures, который содержит в себе несколько картинок: они и образуют основу нашего слайд-шоу. На монтажный стол этого символа мы тоже поместим события, привязанные к кадрам. Экземпляр другого фильма-символа, с именем indicator, отображен в виде маленького белого кружка в районе правого нижнего угла сцены. Этот экземпляр содержит короткую анимацию, предупреждающую пользователя о том, что картинка сейчас сменится (на случай, если бы он захотел приостановить презентацию).

Справа от экземпляра фильма-символа pictures имеется три текстовых поля. Этим полям присвоены имена (по порядку слева направо и сверху вниз) date, country и caption. С помощью кадровых событий эти поля будут заполняться информацией, относящейся к текущей картинке (соответственно, дата, страна и какое-то пояснение). Два других текстовых поля расположены возле блока управления – кнопок воспроизведения, остановки и "перемотки назад". Текстовое поле над кнопками названо warning, поскольку в нем будет отображаться текст, предупреждающий о скорой смене картинки. Поле слева от блока управления называется balloon. Когда пользователь наведет указатель на какую-либо из кнопок, в этом поле отобразится наименование функции этой кнопки.

  1. Сделав двойной щелчок на экземпляре фильма-символа pictures, откройте его для редактирования на месте.

Теперь мы имеем возможность рассмотреть монтажный стол этого фильма-символа. Здесь два слоя, с именами Pix и Actions. Слой Pix содержит пять ключевых кадров, в них помещены разные картинки (если хотите, можете просмотреть их, перемещая курсор воспроизведения). Слой Actions содержит шесть пустых ключевых кадров (скоро мы объясним, почему в этом слое на один ключевой кадр больше, чем в слое Pix).

  1. Открыв панель Действия (Actions), выделите кадр 1 слоя Actions и введите следующий скрипт:
stop();
_root.date.text = "15 июня";
_root.country.text = "Шотландия";
_root.caption.text = "Красивое место, правда?";

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

Следующие три действия заполняют соответствующей информацией текстовые поля на основном монтажном столе. Информация относится к изображению, находящемуся в кадре 1 слоя Pix на монтажном столе этого символа. Другими словами, если данный монтажный стол остановился на этом кадре, на экране одновременно появляется картинка и дополняющий ее текст.

  1. Выделите кадр 2 слоя Actions и поместите в панель Действия такой скрипт:
_root.date.text = "16 июня";
_root.country.text = "Италия";
_root.caption.text = "Накормили очень вкусно!";

Когда фильм-символ переместится к кадру 2, эти три действия обновят надписи в текстовых полях основного монтажного стола. Информация соответствует изображению в кадре 2 слоя Pix.

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

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

 

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

Вот задание:

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

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