Введение в ActionScript
Панель Actions 1. Flash-фильмы, можно сделать интерактивными, заставив некоторые элементы реагировать и отвечать на действия пользователя. Для обеспечения интерактивности используется встроенный во Flash язык сценариев ActionScript. Для работы с ActionScript имеется специальная панель Actions, которую можно вызвать командой Window-->Actions или клавишей <F9>.

Команда, которую может выполнить объект Flash, называется функцией (в ранних версиях — действием). Для того чтобы добавить какую-либо функцию в сценарий, можно просто ввести ее код в окно кода, расположенное в правой части панели Actions, либо перетащить нужную функцию из списка в левой верхней части той же панели (изображен на рисунке). Также можно воспользоваться кнопкой Add a new item .

Чтобы уточнить список параметров требуемой функции, можно посмотреть подсказку. Подсказка появляется после размещения в окне кода названия функции, а также при нажатии на кнопку Show Code Hint .

Функции категории Timeline Control 2. Рассмотрим несколько основных функций Flash. Они относятся к категории Timeline Control (управление временной шкалой).
  • gotoAndPlay и gotoAndStop — заменяют текущий кадр фильма на другой кадр, указанный в качестве параметра. (Могут использоваться, например, для создания меню фильма, когда пользователь выбирает фрагмент для просмотра.) При выполнении первой из них фильм, перейдя на заданный кадр, продолжит воспроизведение, а при выполнении второй фильм приостанавливается. Кадр, на который нужно переместиться, можно задать двумя основными способами:
    1. Указав порядковый номер кадра. Фильм может состоять из нескольких сцен, но нумерация кадров в них является сквозной (если фильм состоит из двух сцен по 25 кадров, а параметром функции gotoAndPlay указано число 50, то функция переведет головку воспроизведения в 25 кадр второй сцены).
    2. Отдельным ключевым кадрам можно присвоить имена (метки), введя их в текстовом поле Frame на панели свойств. Переход к такому кадру можно осуществить, указав эту метку: gotoAndPlay("hello").
    Также в качестве параметра можно указать имя сцены, содержащей нужный кадр. Если сцена не указана, то осуществляется переход на другой кадр текущей сцены.
  • nextFrame и prevFrame — переводят воспроизводящую головку на следующий и предыдущий кадры соответственно, nextScene и prevScene — переход к следующей и предыдущей сцене.

  • play — начинает воспроизведение фильма, stop — заканчивает

  • stopAllSounds — прекращает воспроизведение всех звуковых файлов фильма, которые воспроизводились в момент выполнения этой функции.

События в ActionScript 3. Различные действия выполняются в ActionScript не сами по себе, а в ответ на некоторые события. События бывают трех типов: события от мыши (например, курсор наведен на определенный объект, пользователь щелкнул правой кнопкой и т.д.), события от клавиатуры (нажатие клавиши или комбинации клавиш) и события, связанные с временной шкалой (например, воспроизведение фильма дошло до заданного ключевого кадра). Задача программиста — определить события, требующие реакции, и назначить для каждого из них обработчик события — последовательность команд, которые выполнятся если событие произойдет. В простейшем случае обработчик события может состоять из одной функции.
Упражнение 4. Создайте любую анимацию. При воспроизведении эта анимация будет повторяться циклически до бесконечности. Мы можем добавить кнопку, которая будет останавливать воспроизведение. Для этого выполните следующую последовательность шагов:

1. Создайте в библиотеке кнопку. Поместите эту кнопку на отдельный слой анимации.

2. Не снимая выделения с кнопки, откройте панель Actions и в левой верхней части панели выберите в папке Global Functions папку Movie Clip Control. Чтобы создать обработчик событий, связанный с кнопкой, перетащите на панель кода ключевое слово on. Появится список возможных событий. Выберите press (нажатие) или release (отпускание).

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

Ручной ввод кода 5. Опытным программистам нет необходимости перетаскивать значки функций и синтаксических конструкций в окно кода: текст можно ввести вручную или даже импортировать из текстового файла. В приведенном выше примере мы получили следующий код:

on (press) {
   stop();
}

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

События от мыши
(для кнопок)
6. Ниже приведены обработчики событий, реагирующие на взаимодействии курсора мыши с кнопками. Если курсор мыши попадает в активную область кнопки (Hit), его внешний вид изменяется со стрелки на руку, и говорят, что курсор находится над кнопкой.
  • press. Событие наступает, когда курсор находится над кнопкой и кнопка мыши фиксируется в опущенном положении (нажимается).
  • release. Полный щелчок мыши, (т.е. нажатие и отпускание) над кнопкой.
  • releaseOutside. Происходит в момент отпускания кнопки мыши, если она была нажата над кнопкой, но отпущена за ее пределами.
  • rollOver. Курсор мыши попадает в активную область кнопки.
  • rollOut. Курсор мыши выходит из активной области кнопки.
  • dragOver. Происходит в момент попадания курсора мыши в активную область, если перед этим кнопка мыши была нажата вне этой активной области и с тех пор удерживается в нажатом состоянии.
  • dragOut. Происходит в момент, когда курсор мыши покидает активную область, в пределах которой была нажата и удерживалась в нажатом состоянии кнопка мыши.
Невидимые кнопки 7. Чтобы разные фрагменты изображения сделать интерактивными (реагирующими на нажатия), используются невидимые кнопки. У невидимой кнопки есть только кадр Hit, задающий активную область, а кадры Up, Down и Over пустые. Такую "кнопку" можно разместить над нужным участком изображения и навесить на нее обработчик события.
Упражнение 8. Нужно сделать рекламную страницу некоторой компании. При щелчке на анимированном логотипе должна открываться главная страница сайта компании, а при щелчке на названии компании должен запускаться почтовый клиент с новым письмом в адрес рекламного отдела компании.

1. Набросайте рекламную страницу. По центру должен быть придуманный вами логотип компании, а под ним - ее название.

2. Создайте новый символ типа Button, назовите его невидимка1. Оставьте пустыми первые три кадра этой кнопки, а в кадре Hit разместите любую безконтурную фигуру, соответствующую по форме и размерам вашему логотипу.

3. Создайте отдельный слой в фильме и перетащите экземпляр кнопки на рабочее поле над логотипом. При необходимости подгоните размеры с помощью инструмента Free Transform. Выделите экземпляр кнопки, и на панели Action добавьте обработчик события on(press). В обработчике событий используйте функцию getURL, которая находится в разделе Browser/Network. Эта функция отрывает web-страницу, заданную в качестве параметра. Адрес страницы следует брать в двойные кавычки (строковая константа) и обязательно предварять названием протокола (http://).

4. Протестируйте фильм.

5. Создайте аналогичную кнопку невидимка2. Поскольку эта кнопка будет делать активной простую текстовую надпись, можно выполнить ее просто в виде квадрата, а затем подогнать экземпляр под размеры надписи инструментом Free Transform. Повторите действия п.3, но в качестве параметра функции getURL задайте адрес электронной почты с использованием mailto: (например, "mailto:vasja@yandex.ru"). Протестируйте фильм.

Cобытия от клавиатуры 9. Можно создавать также обработчики событий, которые происходят в результате нажатия пользователем клавиши на клавиатуре. Для этого используется событие keyPress. Способ добавления события таков: сначала экземпляр кнопки надо разместить на рабочем поле того кадра, которым предполагается управлять с клавиатуры, а затем присоединить к нему событие keyPress. Если сама по себе кнопка ничего не должна делать, а используется только для "отлавливания" нажатий клавиш, следует убедиться, что все четыре кадра этой кнопки пусты. Вот пример обработчика, который останавливает фильм, если на клавиатуре нажата клавиша <s>.

on (keyPress "s") {
   stop();
}

Некоторые клавиши (<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. Мы хотим нарисовать собаку, которая бы лаяла и виляла хвостом. Хвост и лающая пасть — это два независимых видеоклипа, которые можно создать в библиотеке, каждый из которых имеет свою временную шкалу и свое число кадров на ней. Задача состоит в том, чтобы собака прекращала вилять хвостом, когда она лает. Для этого необходимо организовать управление видеоклипом хвоста из видеоклипа головы.

1. Откройте библиотеку. Нарисуйте тело собачки в простом графическом символе под названием тело. Создайте анимированный символ хвост, состоящий из двух кадров (с поднятым и опущенным хвостом). Создайте анимированный символ пасть, первые 20 кадров которого изображают пасть в закрытом состоянии (чтобы у собаки было время повилять хвостом), а остальные — несколько циклов движения челюстей. Создайте анимированный символ, представляющий всю собачку целиком, содержащий тело, пасть и хвост и назовите его собачка.

2. Разместите экземпляр видеоклипа собачка на главной временной шкале. Каждому экземпляру можно дать имя, которым он будет отличаться от других. Указать имя экземпляра можно в поле Instance Name на панели свойств. Нашу собаку назовем тузик. Щелкнув дважды по объекту тузик, мы попадем в режим редактирования символа собачка. Дайте имена экземплярам пасти и хвоста (например, пасть1, хвост1).

3. Мы хотим останавливать движение хвоста, когда собака лает. Дважды щелкните на объекте пасть1, чтобы увидеть временную шкалу символа пасть. Хвост должен остановиться при проигрывании первого ключевого кадра, в котором начинается анимация лая (предположительно, 21-го). Выделите этот кадр и в поле Frame Label на панели свойств введите комментарий: //начало лая.

4. Теперь можно приступать к добавлению кода ActionScript. Откройте панель Actions (21-й кадр должен быть выделен). Мы должны вызвать метод stop для объекта хвост1. Для того, чтобы обратиться к этому объекту, мы должны указать его полное имя, сгенерировать которое помогает команда Insert A Target Path (кнопка с перекрестием на панели Actions). Выберите в появившемся окне наш хвост, установите переключатель в позицию Absolute (для наглядности) и нажмите OK. В редакторе кода появится полное имя - осталось добавить метод stop после точки. Код должен быть таким:

   _root.тузик.хвост1.stop();

5. Самостоятельно добейтесь, чтобы после окончания лая хвост продолжал вилять.


главная | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13