ActionScript2 delegate 研究[2]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 flashvan 的 blog

第二个函数的结果参数三

当然我们还可以通过构造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; ilength; i++ )
{
        trace("开始用delegatearray["+i+"]");
        display(delegatearray[i],"参数一");
        display(delegatearray[i],"参数二");
        display(delegatearray[i],"参数三");
}

未完待续
			  
本文关键:ActionScript2 delegate 研究
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top