Если нам нужно обратиться к методу или свойству анимации основного фильма из вложенного в нее клипа, мы воспользуемся модификатором _root . Так, мы можем поместить в клип wheel сценарий
_root.stop();
который остановит воспроизведение внешней анимации.
Чтобы получить доступ к внешнему объекту из внутреннего, используется модификатор _parent . Так, сценарий, помещенный в клип wheel :
_parent.stop();
остановит воспроизведение анимации клипа саг, в который вложен клип wheel .
А теперь необходимо заметить следующее. Пути доступа к клипам могут быть записаны двумя различными способами. И при написании сценариев мы уже использовали оба этих способа.
Во-первых, доступ к клипу можно получить по его абсолютному пути. Абсолютный путь всегда записывается, начиная от внешней анимации, для доступа к которой используется модификатор _root . Вот пример абсолютного пути (выделен полужирным шрифтом):
_root.car.wheel.gotoAndPiay(1);
Этот сценарий будет работать в любом вложенном клипе и в самой внешней анимации, поскольку путь доступа к нужному клипу всегда один и тот же.
Абсолютный путь очень хорош в тех случаях, когда мы хотим обратиться из одного вложенного клипа к другому, находящемуся очень "далеко" от первого. В такой ситуации применение абсолютного пути позволит сделать выражение более компактным.
Во-вторых, мы можем задать относительный путь. Относительный путь записывается относительно текущего клипа, в котором находится сценарий. Так, если нам нужно запустить воспроизведение анимации клипа car из сценария, находящегося в клипе wheel , мы напишем такой сценарий (относительный путь выделен полужирным шрифтом):
_parent.gotoAndPiay (1 );
Относительные пути применяются, если нужно обратиться к другому клипу, находящемуся не очень "далеко". В противном случае он может стать очень длинным.
Для примера напишем два выражения с разными видами путей и сравним их:
_parent.gotoAndPiay(1);
_root.car.gotoAndPiay (1);
Очевидно, что выражение, использующее относительный путь, компактнее того, которое использует абсолютный. А вот еще два разных выражения, находящихся в клипе wheel и останавливающих внешнюю анимацию:
_parent._parent.stop();
_root.stop();
Видно, что второе выражение, использующее абсолютный путь, компактнее. Пути доступа к клипам могут быть весьма длинными, например:
_root.car.engine.electricPart.ignitor.spark();
Чтобы сократить их, можно использовать уже знакомое нам выражение с ключевым словом with :
with (_root.car.engine.electricPart) {
headlightLeft.on();
headlightRight.on();
ignitor.spark();
}
Для вставки в код сценария путей доступа к клипам панель Actionsпредоставляет специальные средства, а именно, кнопку, расположенную над областью редактирования кода:
При нажатии этой кнопки на экране появится диалоговое окно Insert Target Path(рис. 19.1).
Большую часть этого окна занимает иерархический список клипов, вложенных в основной фильм. (Сам основной фильм там также присутствует.) Переключатели Absoluteи Relative, расположенные под списком, позволяют выбрать способ записи пути, соответствующий их названиям. А в поле ввода, расположенном над списком, мы можем ввести путь доступа к клипу вручную. И, разумеется, после задания нужного пути следует нажать кнопку ОК.
Управление воспроизведением анимации
Обычно каждый клип начинает воспроизводиться сразу же после загрузки и воспроизводится до последнего кадра его анимации. Однако, используя сценарии, мы можем управлять этими процессами, в частности, останавливать и запускать воспроизведение, а также воспроизводить фильм, начиная с заданного кадра.
Мы уже знакомы с методом stop объекта movieClip — он останавливает воспроизведение клипа. А чтобы запустить воспроизведение клипа с того места, где он был остановлен, нужно воспользоваться методом play :
car.play();
Для осуществления перехода на какой-либо кадр клипа служат методы gotoAndPlay и gotoAndstop . Первый выполняет переход на заданный кадр и начинает воспроизведение клипа с него. Второй же метод выполняет переход на заданный кадр, но воспроизведение не инициирует. В качестве единственного параметра оба этих метода принимают номер или имя кадра; причем если значение этого параметра имеет числовой тип, то оно трактуется как номер кадра, если строковый — то как его имя. Пример с использованием числового параметра:
Читать дальше
Конец ознакомительного отрывка
Купить книгу