Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.09.2013, 03:41
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 1  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию Диспатч событий от ребёнка к родителю.

Здравствуйте.
Хочу отлавливать события в родителе когда оно диспатчится в любом из дочерних объектов, чтобы получать получать прямую ссылку (target, currentTarget) повесив на родителя лисенер.
То-есть повторить всё тоже что происходит при MouseEvent с дочерними объектами только для своей реализации.

Добавлено через 16 минут
кажется Wolsh такое реализовывал.
__________________
return this...


Последний раз редактировалось AlexCooper; 02.09.2013 в 03:58.
Старый 02.09.2013, 03:59
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Здесь придется извратиться.
Код AS3:
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

Старый 02.09.2013, 04:06
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 3  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
in4core скорей всего второе, но мне нужен диспатч по объектам. То-есть есть объект А, который в себе имеет дочерние объекты виде массива объектов Б, которые в свою очередь могут иметь свои объекты В ( но это не дисплей объекты, это модели, в моделях и т.д.).
Подписываться при push и передавать через отдельную переменную не хочется. Было бы круто, получать ссылку на объект ( к примеру В) как target подписавши объект А на событие Х
__________________
return this...


Последний раз редактировалось AlexCooper; 02.09.2013 в 04:58.
Старый 02.09.2013, 09:40
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 4  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Я бы сделал с сигналами.
"Ребенок":
Код AS3:
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);
		}
	}
}
"Класс родитель"
Код AS3:
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);
		}
	}
}
Для вложенных детей можно сделать переброс событий с ссылками на объекты дальше наверх)

Старый 02.09.2013, 11:22
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 5  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
KumoKairo спасибо, то что нужно)
__________________
return this...

Старый 02.09.2013, 13:38
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 6  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
После некоторых колебаний я тоже перешёл на Signals. Ну не MVC. Ну и фик с ним.

Старый 02.09.2013, 16:43
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 7  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Да чувствую что нужно однозначно хотя бы попробывать поюзать. Если из Си вытянули значит не фигня)
__________________
return this...

Старый 02.09.2013, 17:07
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 8  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Просто относись к нему как к методу класса твоего объекта, который отобрали от EventDispatcher

Старый 02.09.2013, 19:22
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 9  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
Они хороши пока баблинг не станет нужен
__________________
местонахождение

Старый 02.09.2013, 19:34
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 10  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Сообщение от СлаваRa Посмотреть сообщение
Они хороши пока баблинг не станет нужен
А NativeSignal баблинг не поддерживают?

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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