Руководство по actionscript. часть 3, стр. 139

Возрождение переменной _root

В языке ActionScript 2.0 и в более старых версиях языка глобальная переменная root ссылалась на самый верхний клип текущего уровня level. До появления языка ActionScript 3.0 обычный здравый смысл подсказывал, что использования переменной root следует избегать, поскольку ее значение было непостоянным (объект, на который ссылалась данная переменная, изменялся при загрузке SWF-файла в клип).

В языке ActionScript 3.0 глобальную переменную root заменяет переменная экземпляра root класса DisplayOb j ect. Переменная root класса DisplayOb j ect не подвержена непостоянству, которое было свойственно ее предку, и считается чистым, безопасным членом API отображения.

^4_ J Программисты на языке ActionScript, долгое время работавшие с предыдущими версиями щ языка и избегавшие применения устаревшей переменной _root, не должны испыты-— вать чувство страха или вины при использовании переменной экземпляра root класса DisplayObject в языке ActionScript 3.0.

Для чего нужна переменная level?

В языках ActionScript 1.0 и 2.0 функция loadMovieNum ( ) использовалась для размещения внешних SWF-файлов на независимых уровнях приложения Flash Player. Для обращения к каждому уровню использовался следующий формат: level/9, где п обозначает порядковый номер уровня в стеке уровней. В интерфейсе API среды выполнения Flash языка ActionScript 3.0 концепция слоев полностью отсутствует.

В языке ActionScript версии 3.0 ближайшим аналогом слоев являются дочерние объекты экземпляра класса Stage. Тем не менее, если в языках ActionScript 1.0 и 2.0 внешние SWF-файлы могли быть загружены непосредственно на уровень level, в языке ActionScript 3.0 внешние SWF-файлы не могут быть загружены непосредственно в список дочерних объектов экземпляра класса Stage. Вместо этого, чтобы добавить внешний SWF-файл в список дочерних объектов экземпляра класса Stage, мы должны сначала загрузить его с помощью объекта Loader, а затем

поместить его в экземпляр класса Stage через вызов метода stage. addChild ( ), как показано в следующем коде:

var loader:Loader = new Loader( );

1 oader. 1 oad(new URLRequest(«newContent. swf»));

stage. addChild(loader);

Более того, в языке ActionScript 3.0 невозможно удалить все содержимое из приложения Flash Player, выполнив выгрузку уровня level0. Код наподобие следующего больше не является допустимым:

// Очистить все содержимое в приложении Flash Player. // Исключено в языке ActionScript 3.0.

unloadMovieNum(O):

Ближайшей заменой выражения unloadMovieNum(0) в языке ActionScript3.0 является следующее выражение:

stage. removeChi1dAt(0):

Выражение stage. removeChildAt (0) удаляет первый дочерний объект экземпляра класса Stage из списка отображения, но не обязательно удаляет его из программы. Если в программе существуют другие ссылки на этот дочерний объект, он продолжит свое существование, при этом его можно повторно добавить в любой другой контейнер. Как было показано в подразд. «Удаление элементов из памяти» этого раздела, чтобы полностью удалить отображаемый объект из программы, необходимо не только удалить объект из контейнера, но и удалить все ссылки на него. Более того, вызов метода stage. removeChildAt (0) затрагивает только первый дочерний объект экземпляра класса Stage; другие дочерние объекты не удаляются из списка отображения (в отличие от вызова функции unloadMovieNum (0) в языках ActionScript 1.0 и 2.0, которая удаляет содержимое со всех уровней level). Чтобы удалить все дочерние объекты экземпляра класса Stage, используется следующий код внутри объекта, находящегося на глубине 0 экземпляра класса Stage:

while (stage. numChildren > 0) { stage. removeChi1dAt(stage. numChi1dren-1); // Когда удаляется последний дочерний объект, переменной stage // присваивается значение null, поэтому завершаем цикл if (stage == null) { break:

}

}

Подобным образом следующий устаревший код, который очищает приложение Flash Player от всего содержимого и затем помещает файл newContent. swf на уровень _level 0, больше не является допустимым:

1 oadMovieNum(«newContent. swf», 0);

В ActionScript 3.0 эквивалент подобного выражения отсутствует. Но вполне вероятно, что в будущих версиях языка снова появится возможность очищать среду выполнения Flash от всего содержимого, заменяя его новым внешним SWF-файлом.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 129
  • 05.03.2011">Руководство по actionscript. часть 5, стр. 013
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 048
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.166
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.75
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.82
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 141
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 123
  • 29.06.2012">Apple готовит крупное обновление для iTunes
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 032
  • 02.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.106
  • 21.07.2010">10 подсказок к совершенству
  • 15.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.48
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 027
  • 11.03.2011">Руководство по actionscript. часть 4, стр. 004
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...