|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Диспатч событий от ребёнка к родителю.
Здравствуйте.
Хочу отлавливать события в родителе когда оно диспатчится в любом из дочерних объектов, чтобы получать получать прямую ссылку (target, То-есть повторить всё тоже что происходит при MouseEvent с дочерними объектами только для своей реализации. Добавлено через 16 минут кажется Wolsh такое реализовывал.
__________________
return this... Последний раз редактировалось AlexCooper; 02.09.2013 в 03:58. |
|
|||||
[+4 06.05.14]
|
Здесь придется извратиться.
parentMan.addEventListener(CustomMouse.CUSTOM , onCustom); function onCustom(e:CustomMouse):void { trace(e.target) } parent.addChild(child); ... override addChild (parent.flush(child) ) ... function flush(child):void { _flushes.push(child) } ... for(var i:int = 0; i < _flushes.lenght; i++) { _flushes[i].addEventListener(MouseEvent.CLICK , clickMe); } function clickMe(e:MouseEvent):void { parent.dispatchEvent(CustomMouse.... )... } Добавлено через 1 минуту А вообще тема ваша звучит как BUBBLES . А то может я ересь пишу, и вам баблинг просто нужен тупой. Подписался на клик у родителя, подписался на клик у ребенка, но при этом включил баблинг, родитель будет ловить.
__________________
Марк Tween |
|
|||||
in4core скорей всего второе, но мне нужен диспатч по объектам. То-есть есть объект А, который в себе имеет дочерние объекты виде массива объектов Б, которые в свою очередь могут иметь свои объекты В ( но это не дисплей объекты, это модели, в моделях и т.д.).
Подписываться при push и передавать через отдельную переменную не хочется. Было бы круто, получать ссылку на объект ( к примеру В) как target подписавши объект А на событие Х
__________________
return this... Последний раз редактировалось AlexCooper; 02.09.2013 в 04:58. |
|
|||||
Я бы сделал с сигналами.
"Ребенок": package { import org.osflash.signals.Signal; public class EventChild { public var myLittleSignal:Signal; public function EventChild() { //Наш сигнал, который будет диспатчить сигнал с нужными данными myLittleSignal = new Signal(EventChild); } private function dispatchSomeData(child:EventChild):void { //Диспетчиризуем сигнал со ссылкой на данный объект myLittleSignal.dispatch(child); } //Вспомогательня функция public function doSomething():void { dispatchSomeData(this); } } } package { public class EventParent { private var _child:EventChild; public function EventParent() { _child = new EventChild(); //Добавляем слушатель на сигнал "дочернего" объекта _child.myLittleSignal.add(childSignalListener); _child.doSomething(); } private function childSignalListener(child:EventChild):void { trace(child); } } } |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
После некоторых колебаний я тоже перешёл на Signals. Ну не MVC. Ну и фик с ним.
|
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
Просто относись к нему как к методу класса твоего объекта, который отобрали от EventDispatcher
|
|
|||||
Они хороши пока баблинг не станет нужен
__________________
местонахождение |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
А NativeSignal баблинг не поддерживают?
|
Часовой пояс GMT +4, время: 16:28. |
|
« Предыдущая тема | Следующая тема » |
|
|