Показать сообщение отдельно
Старый 23.03.2011, 00:55
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 4  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Код AS3:
package classes 
{
	import flash.utils.flash_proxy;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IEventDispatcher;
	import flash.utils.Proxy;
 
	/**
	 * ...
	 * @author Scarbo
	 * используем композицию, чтобы пользоваться благами и событийной модели и прокси!
	 */
	public class CustomProxy extends Proxy implements IEventDispatcher 
	{
		private var _dispatcher:EventDispatcher;
		private var _data:Object;
 
		public function CustomProxy() 
		{
			super();
			_dispatcher = new EventDispatcher();
			_data = { };
		}
 
		/*вот тут, наследование*/
		override flash_proxy function getProperty(name:*):*{
			if(name in _data){
				return _data[name];
			}else{
				return null;
			}
		}
		override flash_proxy function setProperty(name:*, value:*):void {
			_data[name] = value;
			dispatchEvent(new Event(Event.CHANGE));
		}
 
		/* INTERFACE flash.events.IEventDispatcher */
		/*а тут, композиция*/
		public function dispatchEvent(event:Event):Boolean 
		{
			return _dispatcher.dispatchEvent(event);
		}
		public function hasEventListener(type:String):Boolean 
		{
			return _dispatcher.hasEventListener(type);
		}
		public function willTrigger(type:String):Boolean 
		{
			return _dispatcher.willTrigger(type);
		}
		public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void 
		{
			_dispatcher.removeEventListener(type, listener, useCapture);
		}
		public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void 
		{
			_dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);
		}
 
	}
 
}
__________________
Я просто добрый шутник.