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

Вы вполне можете применять пользовательские события ADDED TO STAGE и REMOVED_FROM_STAGE, даже не имея ни малейшего представления о том, как устроен и функционирует класс StageDetector. Однако он позволяет провести интересный обзор методик программирования, относящихся к списку отображения, которые были рассмотрены в этой главе, поэтому посмотрим, как он работает.

В классе StageDetector объект, для которого отслеживаются пользовательские события ADDED_TO_STAGE и REMOVED_FROM_STAGE, присваивается переменной watchedRoot. Рассмотрим общий подход, применяемый в классе StageDetector для определения присутствия объекта watchedOb j ect в списке отображения.

? Нужно отслеживать события Event. ADDED и Event. REMOVED для объекта watchedRoot.

? Когда объект watchedRoot добавляется в объект DisplayOb j ectContainer, проверять, находится ли watchedOb j ect в настоящий момент в списке отображения (он находится в списке отображения, если значение его переменной stage не равно null). Если в настоящий момент объект watchedOb j ect находится в списке отображения, то следует выполнить диспетчеризацию события StageDetector. ADDED_TO_STAGE. Если нет, то приступить к отслеживанию событий Event. ADDED и Event. REMOVED для нового объекта watchedRoot. t

? Когда объект watchedOb j ect есть в списке отображения, если watchedRoot или любой из его потомков удаляется из объекта DisplayOb j ectContainer, проверять, является ли удаленный объект предком watchedOb j ect. Если да, то выполнить диспетчеризацию события StageDetector. REMOVED_FROM_STAGE и приступить к отслеживанию событий Event. ADDED и Event. REMOVED для нового корня иерархии отображения объекта watchedOb j ect.

Теперь рассмотрим код класса StageDetector.

Листинг 20.8. Пользовательские события ADDED_TO_STAGE и REMOVED_FROM_STAGE

package { import flash. display.*: import flash. events.*:

// Наблюдает за указанным отображаемым объектом, чтобы определить,

// когда этот объект добавляется или удаляется из экземпляра класса Stage,

// и рассылает соответствующие пользовательские события

// StageDetector. ADDED_TO_STAGE и StageDetector. REMOVED_FROM_STAGE.

// ИСПОЛЬЗОВАНИЕ:

// var StageDetector:StageDetector = new StageDetector(someDisplayObject); // StageDetector. addEventListener(StageDetector. ADDED_TO_STAGE, // addedToStageListenerFunction);

// stageDetector. addEventLi stener(StageDetector. REMOVED_FROM_STAGE, // removedFromStageListenerFunction);

public class StageDetector extends EventDispatcher { // Событийные константы

public static const ADDED_TO_STAGE:String = «ADDED_TO_STAGEH: public static const REMOVED_FROM_STAGE:String = «REMOVED_FROM_STAGE»;

// Объект, для которого будут генерироваться события ADDЕD_TO_STAGЕ // и REMOVED_FROM_STAGE

private var watchedObject:DisplayObject = null:

// Корень иерархии отображения, содержащей объект watchedObject private var watchedRotit.’D'is’f&layObject = null:

// Флаг, который говорит, находится ли объект watchedObject // в настоящий момент в списке отображения private var onstage:Boolean = false:

// Конструктор

public function StageDetector (objectToWatch:DisplayObject) {

// Приступаем к мониторингу указанного объекта

setWatchedObject(obj ectToWatch); } ‘

// Приступает к мониторингу указанного объекта, чтобы определить,

// добавлен объект в список отображения или удален из него

public function setWatchedObject (objectToWatch:DisplayObject):void {

// Сохраняем отслеживаемый объект

watchedObject = objectToWatch:

// Помечает, находится ли объект watchedObject в настоящий момент // в списке отображения if (watchedObject. stage!= null) { onstage = true:

}

// Находит корень иерархии отображения, содержащей объект

// watchedObject, и регистрируем в найденном объекте приемники

// для событий ADDED/REMOVED. Проверяя, добавлен или удален

// корень объекта watchedObject, мы сможем определить,

// находится объект watchedObject в списке отображения или нет.

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

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

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

Полезные ссылки
Случайные записи
  • 02.03.2011">Руководство по actionscript. часть 5, стр. 087
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 077
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 069
  • 02.04.2012">Хакеры LulzSec Reborn рассказали о планах на будущее
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 055
  • 20.07.2012">YouTube представил инструмент для размытия лиц
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 148
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 048
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 072
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.18
  • 15.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.56
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 154
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.48
  • 06.07.2011">Небольшие хитрости дизайна
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 017
Опрос

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

View Results

Loading ... Loading ...