Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как детям отследить что их родителя удалили со сцены? (http://www.flasher.ru/forum/showthread.php?t=93390)

__i 20.03.2007 15:05

Как детям отследить что их родителя удалили со сцены?
 
Есть компонет (любой например наследник от UIComponent). Он лежит в контейнер 1, контейнер 1 в контейнере 2 и т.д. Как этому компоненту, отследить, что какой то из эти контейнеров был удален со сцены (т.е. и компонент тоже спрятан)?

Как бы не очень хотелось пользоваться извратом с обхождение парентов вверх до самого.

etc 20.03.2007 15:22

А Event.REMOVED только вверх всплывает?

__i 20.03.2007 15:31

типа того (, детишки его просто не деспатчат. Насколько я понимаю (не смотрел в коде). это событие срабатывает того для компонета который именно ремувили, но не распостраняеться на иерархию его детей (

etc 20.03.2007 15:38

Не проверял, но есть мысль подписать детей цепочкой (т.е. родитель-ребенок, а ребенок передает дальше своим потомкам) на кастомный ивент. Типа:

Код:

private function removedHandler(event:Event):void {
    if (event.target==this) { // Удалили нас
        var evt:CustomEvent = new CustomEvent(CustomEvent.REMOVED);
        dispatchEvent(evt);
    }
}


__i 20.03.2007 16:07

Цитата:

Сообщение от __etc
Не проверял, но есть мысль подписать детей цепочкой (т.е. родитель-ребенок, а ребенок передает дальше своим потомкам) на кастомный ивент. Типа:

Код:

private function removedHandler(event:Event):void {
    if (event.target==this) { // Удалили нас
        var evt:CustomEvent = new CustomEvent(CustomEvent.REMOVED);
        dispatchEvent(evt);
    }
}


не так не катит, т.к. мы не можем изменить контейнеры - это стандартные компоненты, а вот тот самый "интересующийся" ребенок это уже свой компонент. Скорей всего таки придется обходить всех родителей и подвписыватся на листенеров, а это уродство т.к. нужно переопределить кучу методов дабы при всех ремувах и аддах и прочем чистить/заполнять эти листенеры.

etc 20.03.2007 16:14

А почему бы тебе не создать статический класс-вещатель, который подпишется на Event.REMOVED самого-самого родителя всех и вся (ведь ивент к нему всплывет 100%) и при получении ивента разошлет всем твоим кастомным компонентам?

Nirth 20.03.2007 16:26

Etc дело говорит, подпиши СистемМенеджер к ремувд и смотри таргет евента

__i 20.03.2007 19:53

Ребята вы меня не поняли нифига не поняли (. Попробую описать мою конкретную ситуацию.
Есть у меня есть класс который экстендит ТексИнпут, он занимаеться тем что следит за введенными данными и если там количесво символов достигла определенного числа, то нужно показать тултип с сообщением. Станджартный тултип не канает. Так вот это сообщение находиться на сцене несколько секунд, и в эти несколько секунд это текстовое поле может просто исчезнуть(например юзер кликнул на другой таб), но оно должно "почистить" за собой тултип, если он есть.
Живет это класс также как и текст инпут типа засунул в МХМЛ или в Ас Код и есть счастье. И естетсвенно отлавливать все 148 этих инпутов и их родителей где-то в другом месте как не в самом инпуте неспортивно. Типа "Вася, вот тебе мега класс который все делает за тебя, но тебе нужно мегаизвратиться тут и тут, чтобы все работало хорошо" не катит (

Nirth 20.03.2007 22:43

почему бы не сделать нестандартный тултип? там же можно переопределить класс тултипы а с помощью mx.core.Singleton вроде можно расширить менеджер

для тултип есть полный спекрт событий и не надо будет гемороится

__i 20.03.2007 23:35

Ну если уходим от тул типа ? показать какой-то UIComponent? или просто нужно отписатся от событий?


Часовой пояс GMT +4, время: 10:59.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.