Показать сообщение отдельно
Старый 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.