Просмотр полной версии : Как детям отследить что их родителя удалили со сцены?
Есть компонет (любой например наследник от UIComponent). Он лежит в контейнер 1, контейнер 1 в контейнере 2 и т.д. Как этому компоненту, отследить, что какой то из эти контейнеров был удален со сцены (т.е. и компонент тоже спрятан)?
Как бы не очень хотелось пользоваться извратом с обхождение парентов вверх до самого.
А Event.REMOVED только вверх всплывает?
типа того (, детишки его просто не деспатчат. Насколько я понимаю (не смотрел в коде). это событие срабатывает того для компонета который именно ремувили, но не распостраняеться на иерархию его детей (
Не проверял, но есть мысль подписать детей цепочкой (т.е. родитель-ребенок, а ребенок передает дальше своим потомкам) на кастомный ивент. Типа:
private function removedHandler(event:Event):void {
if (event.target==this) { // Удалили нас
var evt:CustomEvent = new CustomEvent(CustomEvent.REMOVED);
dispatchEvent(evt);
}
}
Не проверял, но есть мысль подписать детей цепочкой (т.е. родитель-ребенок, а ребенок передает дальше своим потомкам) на кастомный ивент. Типа:
private function removedHandler(event:Event):void {
if (event.target==this) { // Удалили нас
var evt:CustomEvent = new CustomEvent(CustomEvent.REMOVED);
dispatchEvent(evt);
}
}
не так не катит, т.к. мы не можем изменить контейнеры - это стандартные компоненты, а вот тот самый "интересующийся" ребенок это уже свой компонент. Скорей всего таки придется обходить всех родителей и подвписыватся на листенеров, а это уродство т.к. нужно переопределить кучу методов дабы при всех ремувах и аддах и прочем чистить/заполнять эти листенеры.
А почему бы тебе не создать статический класс-вещатель, который подпишется на Event.REMOVED самого-самого родителя всех и вся (ведь ивент к нему всплывет 100%) и при получении ивента разошлет всем твоим кастомным компонентам?
Etc дело говорит, подпиши СистемМенеджер к ремувд и смотри таргет евента
Ребята вы меня не поняли нифига не поняли (. Попробую описать мою конкретную ситуацию.
Есть у меня есть класс который экстендит ТексИнпут, он занимаеться тем что следит за введенными данными и если там количесво символов достигла определенного числа, то нужно показать тултип с сообщением. Станджартный тултип не канает. Так вот это сообщение находиться на сцене несколько секунд, и в эти несколько секунд это текстовое поле может просто исчезнуть(например юзер кликнул на другой таб), но оно должно "почистить" за собой тултип, если он есть.
Живет это класс также как и текст инпут типа засунул в МХМЛ или в Ас Код и есть счастье. И естетсвенно отлавливать все 148 этих инпутов и их родителей где-то в другом месте как не в самом инпуте неспортивно. Типа "Вася, вот тебе мега класс который все делает за тебя, но тебе нужно мегаизвратиться тут и тут, чтобы все работало хорошо" не катит (
почему бы не сделать нестандартный тултип? там же можно переопределить класс тултипы а с помощью mx.core.Singleton вроде можно расширить менеджер
для тултип есть полный спекрт событий и не надо будет гемороится
Ну если уходим от тул типа ? показать какой-то UIComponent? или просто нужно отписатся от событий?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.