Клипы (тип movieclip)Клипы — это основа Flash, самый важный и мощный элемент swf-фильма. Клипы и средства управления ими появились задолго до ActionScript, и код их реализации не так сильно изменился в последних версиях программы. С большой степенью достоверности можно утверждать, что во внутреннем представлении Flash-плейера между объектами и клипами не так много общего, хотя внешне они ведут себя достаточно схоже. Сложность понимания того места, которое занимают в ActionScript клипы, связана с тем, что использование стандарта ECMAScript в случае Flash достаточно искусственно; Web-скрипты, для реализации которых он предназначен, не работают ни с чем подобным. Дополнительную таинственность вносит и то, что код ActionScript располагается на кадрах клипов, показывая их особое привилегированное положение. Вообще клипы вносят в ActionScript столько особенностей, что практически полностью разрушают ту строгую структуру, которую предполагает ЕСМА-262. Так что критика ActionScript как достаточно запутанного языка имеет определенные основания.Формально клипы являются такими же объектами данных, как, например, массивы или строки, но имеется и ряд существенных отличий. • Новый клип нельзя создать, используя оператор new и конструктор класса. • Клип нельзя удалить при помощи оператора delete. Для этого существует метод removeMovie-Clip(). • У клипа есть собственное имя. Именем же объекта считается имя ссылающейся на него переменной. Это означает, что у объекта нет такого атрибута, как имя. • Клип является по сути маленьким swf-фильмом. Доказательством этого является то, что любой фильм может быть подгружен в другой в качестве клипа (для этого существует метод load-Movie()), а также то, что _root принадлежит к типу movieclip. Список отличий между клипами и объектами можно продолжать и продолжать. И большинство из них будет обусловлено одной причиной: особенностью выделения памяти для клипов и объектов: • Объекты существуют в памяти до тех пор, пока на них имеются ссылки. В противном случае они автоматически удаляются как мусор. Клипы же «живут» до тех пор, пока они физически присутствуют на временной диаграмме. Удалить их можно, или уничтожив саму временную диаграмму, или же явно выгрузив их при помощи метода removeMovieClip(). • Ссылки на объекты являются прямыми указателями на сегмент памяти, который они (объекты) занимают. Оператору typeof не всегда можно доверять при определении типа объекта. Например, кнопки ведут себя практически точно так же, как и клипы, однако их тип устанавливается как object, а не movieclip. Статьи из раздела Action Script на эту тему: ![]() ![]() ![]() ![]() ![]() Вернуться в раздел: Action Script / 1. Язык сценариев. ActionScript: начальные сведения
|