Показать сообщение отдельно
Старый 26.02.2009, 20:59
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 19  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS3:
package  
{
	import flash.display.Sprite;
 
	/**
	 * TestFunkyAggregator class.
	 * @author wvxvw
	 */
	public class TestFunkyAggregator extends Sprite
	{
 
		public function TestFunkyAggregator() 
		{
			super();
			var fooAggregator:FunkyMethodAggregator = new FunkyMethodAggregator("foo");
			var barAggregator:FunkyMethodAggregator = new FunkyMethodAggregator("bar");
			fooAggregator.foo();
			try
			{
				fooAggregator.bar();
			}
			catch (error:Error)
			{
				trace(error.message);
			}
			barAggregator.bar();
			try
			{
				barAggregator.foo();
			}
			catch (error:Error)
			{
				trace(error.message);
			}
		}
 
	}
 
}
Код AS3:
package  
{
	import flash.utils.Proxy;
	import flash.utils.flash_proxy;
 
	use namespace flash_proxy;
	/**
	 * FunkyMethodAggregator class.
	 * @author wvxvw
	 */
	public dynamic class FunkyMethodAggregator extends Proxy
	{
		private var _fancyID:String;
 
		public function FunkyMethodAggregator(fancyID:String) 
		{
			super();
			_fancyID = fancyID ? fancyID : "foo";
		}
 
		private var fancyFunction:Function = function(...rest):void
		{
			trace("This time my name is: " + rest[0]);
		}
 
		override flash_proxy function callProperty(name:*, ...rest):* 
		{
			switch (String(name))
			{
				case "bar":
					if (_fancyID == "foo")
					{
						throw new Error("bar is not a valid method of FunkyMethodAggregator");
					}
					rest.unshift(name);
					return fancyFunction.apply(this, rest);
				case "foo":
					if (_fancyID != "foo")
					{
						throw new Error("bar is not a valid method of FunkyMethodAggregator");
					}
					rest.unshift(name);
					return fancyFunction.apply(this, rest);
			}
		}
	}
 
}
__________________
Hell is the possibility of sanity