Иллюстрированный самоучитель по WEB-графике

       

Пути к объектам


Путь к объекту — это запись имени объекта с учетом его положения в иерархии. Дело в том, что в 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;

      }


      Содержание раздела