Пути к объектам
Путь к объекту — это запись имени объекта с учетом его положения в иерархии.
Дело в том, что в Flash объекты можно вкладывать друг в друга, составляя
таким образом иерархию. Вложенность обеспечивает не только удобство при
работе с объектами, но и ограничивает видимость имен объектов только одним
уровнем. Объект может напрямую (по имени) обращаться только к объектам,
входящим в него, т. е. расположенным в иерархии на один уровень ниже.
Для того чтобы обратиться к объекту другого уровня, нужно указать путь
к нему. Причем путь может указываться как абсолютно (начиная с самого
верхнего уровня иерархии), так и относительно (начиная с текущего уровня).
Путь включает в себя объекты, через которые нужно пройти по дереву иерархии,
чтобы добраться до нужного объекта. Объекты в пути разделяются точками.
Кроме того, есть несколько полезных указателей (их можно назвать
виртуальными объектами).
- this — указатель на самого
себя (т. е. на текущий объект). Используется в случаях, когда, например,
нужно передать в функцию указатель на объект, из которого эта функция
вызывается;
- _parent — указатель на родительский
объект, т. е. объект, расположенный уровнем выше;
- _root — «корень» или начало
иерархии. Без него не обойтись при указании абсолютного пути.
Примеры пути:
- лист.play () — вызывается
функция play() подобъекта лист;
- _parent .дерево .лист . stop ()—
подразумевается, что на некотором уровне имеется объект дерево, у которого
есть вложенный объект лист, вызывающий функцию stop();
- _root .banner ._visible = false
— сделать невидимым мультфильм banner, находящийся на первом
уровне.
Рассмотрим в качестве примера иерархию из пяти объектов (см. рисунок).
Объекты 1—4 находятся в первом слое, объект 5 — во втором слое. Объект
2 вложен в объект 1, а объект 3 вложен в объект 2. Назовем объекты obj
1, obj2, obj3, obj4, obj5.

Рис. 608. Пример иерархии из 5 объектов
Теперь займемся путями. Для начала посмотрим, какие объекты могут обращаться
друг к другу по имени: obj 1 может обращаться к obj2, a obj2 — к obj3,
но при этом obj 1 не может обратиться к obj3 напрямую, т. к. он содержится
не в obj 1, а в obj2.
Пусть, например, объекту 1 нужно, чтобы объект 3 начал заново воспроизводиться
с первого кадра. Вот как это делается:
obj 2.obj 3.gotoAndPlay(1)
Чтобы из объекта 4 сделать полупрозрачным объект 1 (со всеми его подобъек-тами),
нужно в действиях объекта 4 написать:
_parent.objI._alpha = 50
или
_root.obj1._alpha = 50
Поскольку obj4 находится на первом уровне иерархии, то для него _root
и _parent — одно и то же.
Теперь для объекта 3 напишем сценарий, который сделает объект 5 невидимым
при нажатии кнопки мыши. В сценарии для объекта 3 напишем:
onClipEvent (mouseDown)
{
_root.obj5._visible = false;
}
В этом фрагменте использован абсолютный путь. При использовании относительного
пути текст выглядел бы так:
_parent._parent._parent.objS._visible = false
В приведенных выше примерах показано не только то, как выглядят пути,
но и как вызываются функции и присваиваются значения свойствам. Попробуйте
использовать обработчик onClipEvent, задавая различные условия и выполняя
различные действия с объектами.
Одними из самых важных являются функции управления воспроизведением
мультфильма (play(), stop(), gotoAndPlay(), gotoAndStop()). Функции play()
и stop() вызываются без параметров, в то время как в функции goto() нужно
указывать номер кадра и, возможно, сцену.
При создании мультфильмов, особенно интерактивных, часто требуется знать
положение указателя мыши. Координаты указателя мыши хранятся в свойствах
_xmouse и _ymouse.
Они могут быть вычислены относительно различных систем координат. Так,
в главной системе координат горизонтальная координата курсора мыши определяется
следующим образом:
x_pos = _root._xmouse;
Чтобы определить эту же координату внутри клипа, следует использовать
имя экземпляра этого клипа:
x_pos = root.myMovieClip. xmouse
Здесь myMovieClip — имя экземпляра клипа.
Вы можете также определить положение указателя мыши внутри клипа, используя
свойства _xmouse и _ymouse в действии клипа (clip action), как показано
в следующем примере:
nClipEvent (enterFrame)
{
xmousePosition = _xmouse;
ymousePosition = _ymouse;
}
Переменные x_pos и y_pos используются для хранения значений координат
указателя мыши. Вы можете применить их далее в любом сценарии вашего мультфильма.
В следующем примере значения x_pos и y_pos
обновляются каждый раз, когда пользователь перемещает мышь:
onClipEvent(mouseMove)
{
x_pos = root, xmouse; y_pos = _root._ymouse;
} |