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

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

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

Регистрация: Jul 2008
Сообщений: 42
По умолчанию addEventListener в as2

Доброе время суток. Есть ряд объектов, для которых динамически нужно привязать одну и ту же функцию. В AS3 есть addEventListener и removeEventListener. А как можно сделать то же самое в AS2. Заранее благодарю за помощь.

Старый 30.04.2010, 02:33
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Что это за объекты и что значит "привязать"? Расшифруйте...
У разных объектов есть разные события, к ним обработчики привязываются соответствующие.

Старый 30.04.2010, 09:28
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 3  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Вопрос не очень понятен..
Если нужны события как в AS3, можете попробовать воспользоваться моей библиотекой. Она не доделана в части Sprite, но листенеры работают нормально.
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 30.04.2010 в 09:30.
Старый 30.04.2010, 17:09
taras_ вне форума Посмотреть профиль Отправить личное сообщение для taras_ Найти все сообщения от taras_
  № 4  
Ответить с цитированием
taras_
 
Аватар для taras_

Регистрация: Aug 2008
Адрес: RUS, Viipuri
Сообщений: 44
1. Скелет класса "кнопккко" (в данном случае: что-то вроде класса вашего объекта из того самого ряда):

Код AS1/AS2:
import mx.events.EventDispatcher;
import mx.utils.Delegate;
 
class butts.CButtton extends MovieClip {
 
	// событие, которое будем слушать
	public static var	EVENT_RELEASE	:String	= "release_super_button";
 
	// еще какое-то foo-событие
	public static var	EVENT_FOO	:String	= "f00_event_bla_bla";		
 
	// диспетчер
	private var 		dispatcher	:EventDispatcher;
 
	// слушатель
	private var 		listener	:Object;	
 
	// конструктор
	public function CButtton() {
 
		// заводим связочку диспетчер-слушатель
		dispatcher = new EventDispatcher();
		listener = new Object();		
 
	}
 
	// цепляем слушателя
	public function addEventListener(
		$event_type:String,
		$listenerFunc:Function,
		$listenerObj:Object):Void {
 
		listener[$event_type] = Delegate.create($listenerObj, $listenerFunc);		
		dispatcher.addEventListener($event_type, listener);		
	}
 
	// удаляем слушателя
	public function removeEventListener($event_type:String):Void {
		dispatcher.removeEventListener($event_type, listener);
		delete listener[$event_type];
	}
 
	// релизнули кнопку
	private function onRelease():Void {		
		// ...окружающий код
 
		// диспатчим событие!
		dispatcher.dispatchEvent( { type:EVENT_RELEASE } );
 
		// ...окружающий код
	}
 
	// еще что-то произошло :)
	private function fooSomeAction():Void {
		// ...окружающий код
 
		// диспатчим событие!
		dispatcher.dispatchEvent( { type:EVENT_FOO } );
 
		// ...окружающий код		
	}
 
}
2. Теперь перемещаемся в класс, где будем подключать\отключать слушателей:

Код AS1/AS2:
import butts.CButtton;
 
class CAppplication /*extends MovieClip*/ {	
 
	private var aCButtton_01		:CButtton;
	private var aCButtton_02		:CButtton;
	private var aCButtton_0X		:CButtton;
 
	private function forExampleMethod():Void {
 
		// цепляем
		aCButtton_01.addEventListener(CButtton.EVENT_RELEASE, doAction, this);		
		aCButtton_02.addEventListener(CButtton.EVENT_RELEASE, doAction, this);		
		aCButtton_0X.addEventListener(CButtton.EVENT_RELEASE, doAction, this);		
 
		// еще цепляем
		aCButtton_01.addEventListener(CButtton.EVENT_FOO, doFooAction, this);		
 
		// отцепляем
		aCButtton_01.removeEventListener(CButtton.EVENT_RELEASE, doAction);
		aCButtton_01.removeEventListener(CButtton.EVENT_FOO, doFooAction);		
 
		// ну вощем, все как в AS3 теперь
 
	}
 
	public function doAction():Void {
		trace("<doAction> " + arguments);
	}
 
	public function doFooAction():Void {
		trace("<doFooAction> " + arguments);
	}
}
__________________
لعبة الحياة


Последний раз редактировалось taras_; 30.04.2010 в 17:12.
Старый 30.04.2010, 17:31
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 5  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
опять :
Цитата:
listener = new Object();
в хелпе он просто для примера))))
листенером может быть любой объект. в том числе и this (CButtton).

в этой реализации нет target/currentTarget да и самого события(аргумент в ф-ции листенере),
Поэтому в АС2 практически никто не использовал mx.events.EventDispatcher из-за его убогости..
__________________
Отряд Котовскага

Старый 30.04.2010, 18:38
taras_ вне форума Посмотреть профиль Отправить личное сообщение для taras_ Найти все сообщения от taras_
  № 6  
Ответить с цитированием
taras_
 
Аватар для taras_

Регистрация: Aug 2008
Адрес: RUS, Viipuri
Сообщений: 44
Не спорю: чего нет - того нет, что можно - то можно. За estimate реализации - респект, бро! Только выводы обобщающие - это зло!
__________________
لعبة الحياة


Последний раз редактировалось taras_; 30.04.2010 в 18:44.
Старый 01.05.2010, 17:47
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 7  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от taras_ Посмотреть сообщение
Только выводы обобщающие - это зло!
Выводы взяты не с потолка, я не видел за 7 лет кодинга на AS2 практически ни одной библиотеки кода, или примера реального приложения использующего mx.events.EventDispatcher.
Вот Delegate - да - полезная вещь!
Если ты, конечно, имеешь ввиду мой вывод:
"Поэтому в АС2 практически никто не использовал mx.events.EventDispatcher из-за его убогости.. "
__________________
Отряд Котовскага

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

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

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


 


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


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