1. 程式人生 > >AS3.0 給addEventListener裏的方法加上參數傳遞

AS3.0 給addEventListener裏的方法加上參數傳遞

see concat as3 out UNC 一個數 target this ner

方法一:
for(var i:int=1;i<=4;i++){
this["btn"+i].addEventListener(MouseEvent.CLICK,EventUp(btnClick,i));
}

function btnClick(e:MouseEvent,...arg){
photoMC.gotoAndStop(arg);
}
function EventUp(f:Function,... arg):Function{
return function(e:Event){f.apply(null,[e].concat(arg))};
}

將觸發事件的方法包裹在另一個函數裏,然後再將e:Event 對象合並到一個數組(加上要傳遞的參數)。
這裏使用apply方法,為btnClick綁定兩個參數(e和arg)
之後觸發btnClick時,e對應e:MouseEvent,而arg對應...arg

方法二:
var sayHello:String = "xxxxxx";
btn1.addEventListener(MouseEvent.CLICK,function (e:MouseEvent){clickHandlerWithArg(e,sayHello)});
function clickHandlerWithArg(e:MouseEvent,arg:String):void
{
var out:String= e.target + "發出事件(有參數) :" + arg;
trace(out);
}

使用匿名函數裏包裹觸發事件(加上參數)
參數包括e和value

AS3.0 給addEventListener裏的方法加上參數傳遞