Proxyクラス

S2Flex2のソースを読んで知った。
http://livedocs.adobe.com/flex/2_jp/langref/flash/utils/Proxy.html

プロパティへのアクセスや、メソッドの呼び出しのプロキシを作れる。

こんな感じでProxyを継承しておくと、

  import flash.utils.flash_proxy;
  import flash.utils.Proxy;
  use namespace flash_proxy;
  public dynamic class HogeProxy extends Proxy {
        flash_proxy override function callProperty(methodName:*, ...args):*{
           trace("callProperty methodName:" + methodName + " args:" + args);
           return methodName;
        }
        flash_proxy override function setProperty(name:*,value:*):void{
           trace("setProperty name:" + name + " value:" + value);
        }
        flash_proxy override function getProperty(name:*):*{
           trace("getProperty name:" + name);
           return name;
        }
  }

定義していないプロパティやメソッドが、存在するかのようにアクセスすることができる。

  var hogeProxy:HogeProxy = new HogeProxy();
  hogeProxy.moge = "もげ";
  var f:String = hogeProxy.fuga;
  hogeProxy.foobar("ふーばー");