Методы gotoAndPlay() ActionScript и gotoAndStop(). Переход к заданному кадру

В этом уроке мы рассмотрим 2 вопроса:

  1. Методы gotoAndPlay() ActionScript и gotoAndStop(). Переход к заданному кадру
  2. Дополнительная информация

C помощью AS3 (ActionScript 3) Вы можете заставить головку плейера переместиться в нужный кадр на шкале времени. После этого фильм будет либо остановлен, либо начнет воспроизводится с заданного кадра. Это зависит от того какой из двух глобальных методов был вызван: gotoAndPlay() ActionScript или gotoAndStop().

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

  • указав его номер
  • указав, присвоенный ему ярлык

Назначить ярлык кадру во Flash просто:

  • выделите нужный кадр на шкале времени
  • в панели свойств введите имя ярлыка

Ярлыки могут присваиваться только ключевым кадрам! Так как ярлыки в AS3 (ActionScript 3) по своему типу данных являются строками (String), то они могут содержать пробелы и другие специальные символы. Однако важно учитывать регистр букв в названии ярлыка!

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

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

Переход к заданному кадру

Остановка фильма с Motion Tween

Создайте ролик с Motion Tween.

Остановите его на последнем кадре (см. урок «Метод stop() ActionScript. Остановка фильма»).

Создание кнопки для запуска ролика

Создайте новый слой.

Кликните правой кнопкой мыши на последнем кадре Вашего ролика. Выберите в контекстном меню Inset Keyframe (для создания ключевого кадра Вы также можете использовать клавишу F6).

Создайте кнопку (см. урок «Создание символа ActionScript во Flash CS5»).

Присвойте имя кнопке, например btnReplay.

На слое, в котором Вы добавляли метод stop() кликните на последнем кадре.

keyframe actionscript

Откройте панель Actions.

Строчкой ниже метода stop() ActionScript наберите имя кнопки, поставьте точку и затем наберите

addEventListener(MouseEvent.CLICK, replay);

Создайте обработчик события

function replay(event:MouseEvent):void {
}

Внутри фигурных скобок наберите

gotoAndPlay(1);

gotoAndStop actionscript gotoAndPlay

Нажмите Ctrl + Enter.

Ролик начнет воспроизводится. На последнем кадре он остановится и появится кнопка.

Щелкните на кнопке. Ролик начнет воспроизводиться сначала.

Кликните на кнопке «На исходную!».

Дополнительная информация

Считается хорошей практикой присваивать ключевому кадру ярлык, а не ссылаться на него указывая его номер. Основная проблема со ссылками на номер кадра, кроме того, что их трудно запомнить, следующая: номера могут изменяться при добавлении или удалении кадров из фильма, следовательно запланированное действие будет выполняться неверно!

Например, последний кадр в Вашем ролике 200, но если позднее Вы добавите при редактировании к нему еще 10 кадров, то вызывав gotoAndStop(200) ролик остановится не на последнем кадре, как это планировалось, а за 10 кадров до него. В противоложность этому, если бы Вы присвоили последнему кадру ярлык "end", то проблем бы не было – остановка произошла бы в нужном месте и добавленные кадры никак не повлияли бы на работу скрипта.

Еще одна положительная сторона использования ярлыков: они появляются на шкале времени, т.е. Вы можете видеть их и легко ориентироваться в том, когда происходят такие моменты в коде, а не ищите их, прокручивая ролик.

Ярлыки должны помещаться в ключевые кадры на отдельном слое, созданном специально для них, хотя многие flash-программисты комбинируют их вместе со скриптом, помещая всё на один слой "actions". Главное требование здесь: нужно отделять и ярлыки и код от слоев с визуальными элементами.