AS3 函数 传递参数

今日收获:

 

1.自定义的 元件类, 声明一个对象后,可以获取到这个对象内包含的 名称 ,属性等。如:

mcInfo 类是一个自定义元件类,这个元件里有 关闭按钮 ,文本等,使用如下:

 

var info:mcInfo  = new mcInfo ();

info.getChildByName("txt").width = 100//赋值 元件内的 txt属性

 

info.getChildByName("close").x = 50//赋值  元件内的 关闭按钮 X坐标属性

 

 

2.参数传递参数 问题:在定义事件类型的时候,采用.addEventListener(Event,func);有时候经常需要对func传递参数。方法有

A. btn.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void{.........}) 形式

{......} 语句里面可以写调用的函数 exafunc(arg1,arg2,...);或者直接写一些语句,如trace(e) 等等.

 

B.采用代理函数 如可以声明一个类 Delegate()代理类,这个类里可以定义一个函数 用于接收 来自事件的相应。如

Delegate 类(代理类)

package {

    public class Delegate {

        public static function create(_arg1:Function, ... _args):Function{   //调用入口
            return (createWithArgs(_arg1, _args));
        }
        private static function createWithArgs(_arg1:Function, _arg2:Array):Function{  //调用内部函数
            var func:Function = _arg1;
            var args:Array = _arg2;
            var f:Function = function (){               //定义一个函数,用于返回函数对象
                var func1:Function = arguments.callee.propfunc ;   //赋值当前调用函数对象(引用)的属性 (createWithArgs函数 引用的属性)
                var args:Array = arguments.concat(args); //赋值参数
                return (func1.apply(null, args));//由于 apply() 是 Function 类的方法,所以它也是 ActionScript 中每个Function 对象的方法。    返回被调用函数指定为返回值的值   (args作为参数传递给func1)

            }        

            f["propfunc "] = func;     //或者f.propfunc = func //自定义一个 f(Function 对象)的属性 并赋值为 func(_arg1:传递的函数对象参数. )   
            return (f);          //返回函数对象,这样  传递的函数对象  _ arg1  就带上了传递的参数
        }

    }

 

调用方法如下:

btn.addEventListener(MouseEvent.CLICK, Delegate.create(showMsg, "测试字符串1","测试字符串2");//可以传递多个参数

//定义showMsg

private function showMsg(_arg1:MouseEvent, _arg2:String, _arg3:String):void{

     trace(_arg2);

     trace(_arg3);

}

 

注:红色字体要保持一致。 是函数对象的属性。这个地方比较绕。

 

var func1:Function  = arguments.callee.propfunc //: 是当前函数调用的属性 赋值给 var func1:Function  函数对象

 f["propfunc "] = func // 函数对象的属性等于 传递的参数 函数对象。

 

所以,func1.apply(null, args));//这样的调用才会成功,定义的函数的属性  等于 传递的参数 函数对象,所以参数也就赋给传递的函数对象了。

 

如有问题,再纠正....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值