Опубликован: 04.11.2006 | Доступ: свободный | Студентов: 4461 / 498 | Оценка: 4.46 / 3.96 | Длительность: 39:17:00
Урок 2:

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

О методах как обработчиках событий

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

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

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

onClipEvent (mouseDown) {
  _rotation = 45;
}

При нажатии на кнопку мыши скрипт повернет экземпляр на 45 градусов.

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

myMovieClip.onMouseDown = function (){
  myMovieClip._rotation = 45;
}

Вместо того, чтобы использовать для описания обработчика, как в предыдущем примере, onClipEvent, здесь мы ставим точку, отделяющую имя объекта (в данном случае myMovieClip ) от события, на которое должна последовать реакция. Этот скрипт мы помещаем в кадр, а не присоединяем его к экземпляру.

Ключевое слово function() в приведенном выше скрипте пусть вас не волнует. О функциях будет подробно рассказано в Уроке 5. Сейчас вам достаточно знать, что слово function() – необходимый элемент синтаксиса реализации обработчика-метода.

Совет Ближе познакомившись с функциями, вы поймете, что в каких-то случаях можно использовать в качестве метода-обработчика некую определенную функцию, для этого нужно будет изменить синтаксис таким образом: myMovieClip.onMouseDown = имяФункции;.

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

Примечание Обратите внимание, что в первом скрипте путь к цели не указывался ( _rotation = 45 ), тогда как во втором случае он указан ( myMovieClip._rotation = 45 ). Дело в том, что первый скрипт присоединен к myMovieClip, потому путь и не нужен – подразумевается, что целью является сам фильм-символ. Второй же скрипт помещен в кадр, поэтому нужно указать путь, чтобы Flash понял, какой именной объект следует повернуть. Используя обработчики-методы описанным выше способом, не забывайте должным образом указывать путь к цели, над которой производятся действия. Подробному рассказу о путях и целях посвящен Урок 3.

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

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

Примечание Методы-обработчики играют очень важную роль при создании собственных объектов и описания их реакции на события. Об этом смотри Урок 6: Модификация объектов.

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

Вот задание:

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

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

Добрый день.

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

Ольга Ремез
Ольга Ремез
Латвия, Рига
Светлана Ведяева
Светлана Ведяева
Россия, Саратов