![]() | |
Панель Actions |
1. Flash-фильмы, можно сделать интерактивными, заставив некоторые элементы реагировать и отвечать на действия пользователя. Для обеспечения интерактивности используется встроенный во Flash язык сценариев ActionScript. Для работы с ActionScript имеется специальная панель Actions, которую можно вызвать командой
|
Функции категории Timeline Control |
2. Рассмотрим несколько основных функций Flash. Они относятся к категории Timeline Control (управление временной шкалой).
|
События в ActionScript | 3. Различные действия выполняются в ActionScript не сами по себе, а в ответ на некоторые события. События бывают трех типов: события от мыши (например, курсор наведен на определенный объект, пользователь щелкнул правой кнопкой и т.д.), события от клавиатуры (нажатие клавиши или комбинации клавиш) и события, связанные с временной шкалой (например, воспроизведение фильма дошло до заданного ключевого кадра). Задача программиста — определить события, требующие реакции, и назначить для каждого из них обработчик события — последовательность команд, которые выполнятся если событие произойдет. В простейшем случае обработчик события может состоять из одной функции. |
Упражнение |
4. Создайте любую анимацию. При воспроизведении эта анимация будет повторяться циклически до бесконечности. Мы можем добавить кнопку, которая будет останавливать воспроизведение. Для этого выполните следующую последовательность шагов:
1. Создайте в библиотеке кнопку. Поместите эту кнопку на отдельный слой анимации. 2. Не снимая выделения с кнопки, откройте панель Actions и в левой верхней части панели выберите в папке Global Functions папку Movie Clip Control. Чтобы создать обработчик событий, связанный с кнопкой, перетащите на панель кода ключевое слово on. Появится список возможных событий. Выберите press (нажатие) или release (отпускание). 3. Теперь в появившихся фигурных скобках надо указать последовательность команд, которая выполнится при нажатии (или отпускании) кнопки. Выберите в списке функций stop и дважды щелкните по ней. Теперь приложение можно протестировать. |
Ручной ввод кода |
5. Опытным программистам нет необходимости перетаскивать значки функций и синтаксических конструкций в окно кода: текст можно ввести вручную или даже импортировать из текстового файла. В приведенном выше примере мы получили следующий код:
on (press) { Ключевое слово on задает обработчик события, указанного в круглых скобках. Команды этого обработчика записываются в фигурных скобках через точку с запятой. То, что обработчик реагирует именно на нажатие кнопки, следует из того, что код вводился, когда кнопка была выделена. Если снять с кнопки выделение, окно кода очистится, а если снова выделить ее, то снова будет виден код обработчика. |
События от мыши (для кнопок) |
6. Ниже приведены обработчики событий, реагирующие на взаимодействии курсора мыши с кнопками. Если курсор мыши попадает в активную область кнопки (Hit), его внешний вид изменяется со стрелки на руку, и говорят, что курсор находится над кнопкой.
|
Невидимые кнопки | 7. Чтобы разные фрагменты изображения сделать интерактивными (реагирующими на нажатия), используются невидимые кнопки. У невидимой кнопки есть только кадр Hit, задающий активную область, а кадры Up, Down и Over пустые. Такую "кнопку" можно разместить над нужным участком изображения и навесить на нее обработчик события. |
Упражнение |
8. Нужно сделать рекламную страницу некоторой компании. При щелчке на анимированном логотипе должна открываться главная страница сайта компании, а при щелчке на названии компании должен запускаться почтовый клиент с новым письмом в адрес рекламного отдела компании.
1. Набросайте рекламную страницу. По центру должен быть придуманный вами логотип компании, а под ним - ее название. 2. Создайте новый символ типа Button, назовите его невидимка1. Оставьте пустыми первые три кадра этой кнопки, а в кадре Hit разместите любую безконтурную фигуру, соответствующую по форме и размерам вашему логотипу. 3. Создайте отдельный слой в фильме и перетащите экземпляр кнопки на рабочее поле над логотипом. При необходимости подгоните размеры с помощью инструмента Free Transform. Выделите экземпляр кнопки, и на панели Action добавьте обработчик события 4. Протестируйте фильм. 5. Создайте аналогичную кнопку невидимка2. Поскольку эта кнопка будет делать активной простую текстовую надпись, можно выполнить ее просто в виде квадрата, а затем подогнать экземпляр под размеры надписи инструментом Free Transform. Повторите действия п.3, но в качестве параметра функции getURL задайте адрес электронной почты с использованием mailto: (например, "mailto:vasja@yandex.ru"). Протестируйте фильм. |
Cобытия от клавиатуры |
9. Можно создавать также обработчики событий, которые происходят в результате нажатия пользователем клавиши на клавиатуре. Для этого используется событие keyPress. Способ добавления события таков: сначала экземпляр кнопки надо разместить на рабочем поле того кадра, которым предполагается управлять с клавиатуры, а затем присоединить к нему событие keyPress. Если сама по себе кнопка ничего не должна делать, а используется только для "отлавливания" нажатий клавиш, следует убедиться, что все четыре кадра этой кнопки пусты. Вот пример обработчика, который останавливает фильм, если на клавиатуре нажата клавиша <s>.
on (keyPress "s") { Некоторые клавиши (<Esc>, <Enter>, запятая и точка), а также комбинации из нескольких клавиш во Flash не применяются |
Cобытия, связанные с временной шкалой | 10. Обработчик событий ключевого кадра зависит только от воспроизведения фильма и не зависит от действий пользователя. Команды, добавленные к кадру, выполняются, когда воспроизводящая головка (указатель текущего кадра) входит в кадр. При этом все равно, попадет она в этот кадр в результате последовательного воспроизведения фильма или в результате выполнения команды goto. |
Объектно-ориентированный подход в ActionScript |
11. Помимо простых функций в ActionScript используются объектно-ориентированные понятия: объекты, свойства, значения и методы. Объект — это элемент программы, характеристики которого можно изменять. Существуют объекты, определяемые пользователем (когда программист сам создает объект и дает ему имя) и объекты, уже определенные языком программирования, например объект MovieClip (видеоклип). Объектом является любой экземпляр видеоклипа. Изменяемые характеристики объекта называются свойствами. Так, у объекта MovieClip есть свойства _xscale и _yscale, определяющие его масштаб по горизонтали и вертикали в процентах. С каждым свойством сопоставлены данные определенного типа, которые называются значением свойства. Например, значение свойства _xscale может быть равно 50 — это значит, что данный экземпляр видеоклипа "сплюснут" по горизонтали в два раза.
Свойства объектов можно изменять во время выполнения программы. Для этого в ActionScript используется точечный синтаксис, стандартный для объектно-ориентированных языков. Для обращения к свойству какого-то объекта оно указывается после имени объекта через точку. Пусть у нас есть экземпляр видеоклипа с именем simpleAnim. Чтобы программным путем уменьшить его по вертикали в два раза, необходимо выполнить команду: simpleAnim._yscale = 50; Наконец, существуют процедуры, позволяющие обратиться к объекту и произвести с ним какое-то действие. Эти процедуры называются методами. Одним из методов объекта MovieClip является метод gotoAndPlay(), который мы рассматривали как одиночную функцию. Для того чтобы начать воспроизведение клипа simpleAnim с кадра, имеющего метку start, необходимо выполнить команду: simpleAnim.gotoAndPlay("start"); |
Упражнение |
12. Мы хотим нарисовать собаку, которая бы лаяла и виляла хвостом. Хвост и лающая пасть — это два независимых видеоклипа, которые можно создать в библиотеке, каждый из которых имеет свою временную шкалу и свое число кадров на ней. Задача состоит в том, чтобы собака прекращала вилять хвостом, когда она лает. Для этого необходимо организовать управление видеоклипом хвоста из видеоклипа головы.
2. Разместите экземпляр видеоклипа собачка на главной временной шкале. Каждому экземпляру можно дать имя, которым он будет отличаться от других. Указать имя экземпляра можно в поле Instance Name на панели свойств. Нашу собаку назовем тузик. Щелкнув дважды по объекту тузик, мы попадем в режим редактирования символа собачка. Дайте имена экземплярам пасти и хвоста (например, пасть1, хвост1). 3. Мы хотим останавливать движение хвоста, когда собака лает. Дважды щелкните на объекте пасть1, чтобы увидеть временную шкалу символа пасть. Хвост должен остановиться при проигрывании первого ключевого кадра, в котором начинается анимация лая (предположительно, 21-го). Выделите этот кадр и в поле Frame Label на панели свойств введите комментарий: _root.тузик.хвост1.stop(); 5. Самостоятельно добейтесь, чтобы после окончания лая хвост продолжал вилять. |