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

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

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

Регистрация: Oct 2008
Сообщений: 14
По умолчанию Рассылка событий

Всем привет.

Проблема в том, что не могу реализовать свое событие(
в аттаче приложены исходники примера

работать все должно так - класс Test в конструкторе подписывается на событие CustomEvent.MYEVENT с обработчиком myEventHandler и выполняет функцию TheOtherClass.doSmth(), откуда и рассылается событие. Хотелось бы, чтобы TheOtherClass не наследовал EventDispatcher, а создавал экземпляр EventDispatcher, с помощью которого и делал рассылку (если это возможно конечно).

Подскажите плз....или может ктонибудь исправит исходники и выложит работающий вариант?

test.rar

Старый 24.01.2009, 18:42
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 2  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Примерно так

Код AS3:
package
{
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IEventDispatcher;
 
	public class TheOtherClass implements IEventDispatcher
	{
		private var _eventDispatcher:EventDispatcher;
 
		public function OtherClassDis()
		{
			_eventDispatcher = new EventDispatcher(this);
		}
 
		public function addEventListener(type:String,
										listener:Function,
										useCapture:Boolean = false,
										priority:int = 0,
										useWeakReference:Boolean = false):void
		{
			_eventDispatcher.addEventListener(type,listener,useCapture,priority,useWeakReference);
		}
 
		public function dispatchEvent(event:Event):Boolean
		{
			return _eventDispatcher.dispatchEvent(event);
		}
 
		public function hasEventListener(type:String):Boolean
		{
			return _eventDispatcher.hasEventListener(type);
		}
 
		public function removeEventListener(type:String,listener:Function,useCapture:Boolean = false):void
		{
			_eventDispatcher.removeEventListener(type,listener,useCapture);
		}
 
		public function willTrigger(type:String):Boolean
		{
			return _eventDispatcher.willTrigger(type);
		}
	}
}


Последний раз редактировалось r_r_f_r; 24.01.2009 в 19:16.
Старый 24.01.2009, 19:11
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 3  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
r_r_f_r, лучше в конструкторе сделать так:
Код AS3:
this._eventDispatcher = new EventDispatcher( this );
тогда в таргете событий будет экземпляр класса TheOtherClass.

Старый 24.01.2009, 19:18
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 4  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
BlooDHounD, задремал малость, спасибо. Код подправил.

Старый 25.01.2009, 00:16
kyrpyr вне форума Посмотреть профиль Отправить личное сообщение для kyrpyr Найти все сообщения от kyrpyr
  № 5  
Ответить с цитированием
kyrpyr

Регистрация: Oct 2008
Сообщений: 14
а как рассылать тогда событие? так не работает
Код AS3:
_eventDispatcher.dispatchEvent(new CustomEvent(CustomEvent.MYEVENT));

Старый 25.01.2009, 01:24
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 6  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
у меня работает.

Старый 25.01.2009, 03:10
kyrpyr вне форума Посмотреть профиль Отправить личное сообщение для kyrpyr Найти все сообщения от kyrpyr
  № 7  
Ответить с цитированием
kyrpyr

Регистрация: Oct 2008
Сообщений: 14
странно все это....если не сложно, посмотри исходник, я уж прям и не знаю, в чем дело, всю голову поломал....
test.rar

Старый 25.01.2009, 10:59
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 8  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Код AS1/AS2:
		public function Test() {
			var to:TheOtherClass = new TheOtherClass();
			to.addEventListener(CustomEvent.MYEVENT, myEventHandler);
			to.doSmth()
		}
 
		private function myEventHandler(evt:CustomEvent):void {
			trace("евент достиг цели!")
		}
Тебе нужно подписать именно объект to.


Последний раз редактировалось r_r_f_r; 25.01.2009 в 11:07.
Старый 25.01.2009, 12:38
_Smirnoff вне форума Посмотреть профиль Отправить личное сообщение для _Smirnoff Найти все сообщения от _Smirnoff
  № 9  
Ответить с цитированием
_Smirnoff
 
Аватар для _Smirnoff

блогер
Регистрация: Jul 2007
Адрес: Russia
Сообщений: 292
Записей в блоге: 5
kyrpyr, а зачем испльзовать композицию в TheOtherClass в отношении EventDispatcher. Или вы хотите TheOtherClass унаследоваь от другого класса.
__________________
Оптимизация производительности на уровне кода

Старый 25.01.2009, 14:58
kyrpyr вне форума Посмотреть профиль Отправить личное сообщение для kyrpyr Найти все сообщения от kyrpyr
  № 10  
Ответить с цитированием
kyrpyr

Регистрация: Oct 2008
Сообщений: 14
Цитата:
Тебе нужно подписать именно объект to.
Точно, спасибо
Цитата:
kyrpyr, а зачем испльзовать композицию в TheOtherClass в отношении EventDispatcher. Или вы хотите TheOtherClass унаследоваь от другого класса.
именно так я и хотел сделать

с экземпляром класса все ясно, а как поступить, если функция doSmth статическая и вызывается соответственно от имени класса?

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

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

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


 


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


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