Дострочное пересдача экзамена
|
Применение обработчиков событий
Большинство событий мыши можно присоединить к фильму-символу
Во 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 основного монтажного стола очень много действий, необходимых для инициализационного процесса. Здесь объявляются переменные и массивы, описываются функции – в общем, все, что может понадобиться содержащимся в фильме скриптам сразу после начала воспроизведения.
В следующем упражнении мы, используя события кадров, создадим несложную самопроигрывающуюся презентацию, отображающую картинки с соответствующими подписями – вроде слайдшоу.
- Откройте файл FrameEvents1.fla из папки Lesson02/Assets; откройте инспектор Параметры (Property).
Первым делом давайте посмотрим, что у нас на сцене.
Эта 200-кадровая сцена содержит шесть слоев (названных в соответствии с содержимым), пять текстовых полей, три кнопки и два фильма-символа. Воспроизведение фильма начнется с кадра 1 – на экране появится картинка и соответствующий текст. Мы поместим в кадр 200 действия, обуславливающие смену картинки и возврат монтажного стола к кадру 1, и этот процесс будет повторяться, сколько мы захотим. Поскольку наш фильм воспроизводится со скоростью 20 кадров в секунду, каждая картинка будет находиться на экране 10 секунд (200 кадров поделить на 20 кадров в секунду), а затем сменится. Если вы выделите малую картинку в левой части сцены и посмотрите в инспектор Параметры, то увидите, что это есть ни что иное, как экземпляр фильма-символа с именем pictures, который содержит в себе несколько картинок: они и образуют основу нашего слайд-шоу. На монтажный стол этого символа мы тоже поместим события, привязанные к кадрам. Экземпляр другого фильма-символа, с именем indicator, отображен в виде маленького белого кружка в районе правого нижнего угла сцены. Этот экземпляр содержит короткую анимацию, предупреждающую пользователя о том, что картинка сейчас сменится (на случай, если бы он захотел приостановить презентацию).
Справа от экземпляра фильма-символа pictures имеется три текстовых поля. Этим полям присвоены имена (по порядку слева направо и сверху вниз) date, country и caption. С помощью кадровых событий эти поля будут заполняться информацией, относящейся к текущей картинке (соответственно, дата, страна и какое-то пояснение). Два других текстовых поля расположены возле блока управления – кнопок воспроизведения, остановки и "перемотки назад". Текстовое поле над кнопками названо warning, поскольку в нем будет отображаться текст, предупреждающий о скорой смене картинки. Поле слева от блока управления называется balloon. Когда пользователь наведет указатель на какую-либо из кнопок, в этом поле отобразится наименование функции этой кнопки.
- Сделав двойной щелчок на экземпляре фильма-символа pictures, откройте его для редактирования на месте.
Теперь мы имеем возможность рассмотреть монтажный стол этого фильма-символа. Здесь два слоя, с именами Pix и Actions. Слой Pix содержит пять ключевых кадров, в них помещены разные картинки (если хотите, можете просмотреть их, перемещая курсор воспроизведения). Слой Actions содержит шесть пустых ключевых кадров (скоро мы объясним, почему в этом слое на один ключевой кадр больше, чем в слое Pix).
- Открыв панель Действия (Actions), выделите кадр 1 слоя Actions и введите следующий скрипт:
stop(); _root.date.text = "15 июня"; _root.country.text = "Шотландия"; _root.caption.text = "Красивое место, правда?";
Первое действие предотвращает воспроизведение следующих кадров этого фильма-символа – до тех пор, пока мы не разрешим.
Следующие три действия заполняют соответствующей информацией текстовые поля на основном монтажном столе. Информация относится к изображению, находящемуся в кадре 1 слоя Pix на монтажном столе этого символа. Другими словами, если данный монтажный стол остановился на этом кадре, на экране одновременно появляется картинка и дополняющий ее текст.
- Выделите кадр 2 слоя Actions и поместите в панель Действия такой скрипт:
_root.date.text = "16 июня"; _root.country.text = "Италия"; _root.caption.text = "Накормили очень вкусно!";
Когда фильм-символ переместится к кадру 2, эти три действия обновят надписи в текстовых полях основного монтажного стола. Информация соответствует изображению в кадре 2 слоя Pix.