package sketchbook.data { import flash.utils.Proxy; import flash.utils.flash_proxy; /** * 条件にあった一覧のクラスのプロパティ、関数を一斉に操作するクラス。 * * Proxyクラスと委譲の対象が1対1対応すべきという従来の考え方が、 * 根本から間違っていたということを提案する実験クラス。 */ dynamic public class SmartDelegate extends Proxy { public namespace smart_delegate; use namespace smart_delegate; //本当はここにネームスペースを使うこと smart_delegate var items:Array smart_delegate var filter:Function public function SmartDelegate(items:Array, filter:Function=null) { super(); this.smart_delegate::items = items; this.smart_delegate::filter = (filter==null)? smart_delegate::defaultFilter : filter; } /** * itemsに格納されたアイテム内で、filterに適合する全てのアイテムの関数をコールし、結果を配列に格納 */ override flash_proxy function callProperty(methodName:*, ...args):* { var ar:Array = []; var itms:Array = smart_delegate::getFilterdItems(this.smart_delegate::items); var n:int = itms.length; for(var i:int=0; i