Особенности основной временной диаграммы _root

Между основной временной диаграммой (шкалой) _root и простым клипом нет принципиальных различий. Более того, _root можно смело считать обычным клипом и применять к ней практически все методы и свойства класса MovieClip. Чтобы убедиться в этом, нарисуйте на рабочем поле небольшой квадратик и наберите:

_root._x+=100;

Тестировав фильм, вы увидите, что фигура сместилась. Это связано с тем, что на 100 пикселей вправо передвинулась сама временная диаграмма.

Основную временную шкалу можно увеличить и даже повернуть:

// Квадратик будет повернут и растянут относительно левого верхнего угла
// фильма
_root._rotation+=45;
_root._xscale+=30;

Можно заставить _root даже перемешаться вслед за курсором мыши:

c_root.startDrag(); // Квадратик следует за курсором мыши

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

trace(typeof _root); // Выводит: movieclip
trace(_root instanceof MovieClip); // Выводит: true

Однако у основной временной шкалы имеются и некоторые отличия от клипов.


Перечислим наиболее важные:

• Невозможно создать дубликат _root при помощи метода duplicateMovieClip() или удалить ее с использованием метода removeMovieClip().

• Невозможно работать с основной временной шкалой как кнопкой (обычные клипы способны
«слушать» присущие кнопкам события),

• Так как _root не является частью другого клипа, некоторые присущие обычным клипам свойства и методы не могут быть использованы по отношению к ней (например, _parent или
swapDepths()).

Основная временная шкала — это привилегированный объект в структуре swf-фильма. Поэтому логично предположить, что ей должны быть присущи свойства, которых нет у обычных клипов.

Проверим это, воспользовавшись недокументированной функцией ASSetPropFIags():

ASSetPropFlags(_root, null, null, 1);
for (var i in _root) {
trace(i); // Выводит: __proto__ constructor $appPath
// $version
}

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

trace($appPath); // Выводит: file:///C|/Program%20Files/Macromedia/
// Flash%20MX%202004/
trace($version); // Выводит: WIN 7,0,14,0

По выведенным в Output строкам несложно заключить, что свойство $appPath возвращает директорию, в которой установлена программа.


Свойство $version же служит для определения версии имеющегося на компьютере flash-плейера. Забегая вперед, отметим, что среди документированных возможностей ActionScript есть аналог свойства Sversion (функция getVersion()), так что использовать его вряд ли стоит. Свойство же $appPath служебное и вряд ли может быть хоть как-то с пользой применено на практике.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Action Script на эту тему:
Виртуальные слои клипов
Задание формулы цвета
Имена экземпляров клипов
Импорт внешних фильмов и изображений
Клипы как носители кода

Вернуться в раздел: Action Script / 10. Клипы