第二个函数的结果参数三
当然我们还可以通过构造delegate类的对象,调用该对象createdelegate(o:object)方法来实现:
import mx.utils.delegate; var delegatearray:array = [ new delegate(democlass.fun1), new delegate(democlass.fun2) ]; function display(d:delegate,arg:string) { trace(d.createdelegate()(arg)); } for(var i:number = 0; ilength; i++ ) { trace("开始用delegatearray["+i+"]"); display(delegatearray[i],"参数一"); display(delegatearray[i],"参数二"); display(delegatearray[i],"参数三"); }
上面调用的都是类的静态方法,delegate对象一样可以引用非静态方法:
//****************************************************** // @filename instancedemo.as // @package // @description 演示类,有两个实例方法 // @author aol // @email jeremy1982@21cn.com // @create 2004.09.20 // @lastchange 2004.09.20 // @history //****************************************************** class instancedemo { public function fun1(arg:string):string { var str:string = "第一个函数的结果"+arg; return str; } public function fun2(arg:string):string { var str:string = "第二个函数的结果"+ arg; return str; } }; //instancedemo1.fla import mx.utils.delegate; var a:instancedemo = new instancedemo(); var delegatearray:array = [ delegate.create(a,a.fun1), delegate.create(a,a.fun2) ]; function display(f:function,arg:string) { trace(f(arg)); } for(var i:number = 0; ilength; i++ ) { trace("开始用delegatearray["+i+"]"); display(delegatearray[i],"参数一"); display(delegatearray[i],"参数二"); display(delegatearray[i],"参数三"); } //instancedemo2.fla import mx.utils.delegate; var delegatearray:array = [ new delegate(new instancedemo().fun1), new delegate(new instancedemo().fun2) ]; function display(d:delegate,arg:string) { trace(d.createdelegate()(arg)); } for(var i:number = 0; i length; i++ ) { trace("开始用delegatearray["+i+"]"); display(delegatearray[i],"参数一"); display(delegatearray[i],"参数二"); display(delegatearray[i],"参数三"); }
未完待续