* import com.ycccc.utils.JEventDelegate
stage.addEventListener(MouseEvent.MOUSE_DOWN,JEventDelegate.create(mouseDownHandler,"a","b"));
function mouseDownHandler(e:MouseEvent,...arg) {
trace(e)
trace(arg)
}
*/
package com.ycccc.utils{
public class JEventDelegate {
public function JEventDelegate() {
}
public static function create(f:Function,... arg):Function {
var F:Boolean=false;
var _f:Function=function(e:*,..._arg){
_arg=arg
if(!F){
F=true
_arg.unshift(e)}
f.apply(null,_arg)
};
return _f;
}
public static function toString():String {
return "Class JEventDelegate";
}
}
}
使用格式如下:
import com.ycccc.utils.JEventDelegate
stage.addEventListener(MouseEvent.MOUSE_DOWN,JEventDelegate.create(mouseDownHandler,"a","b"));
function mouseDownHandler(e:MouseEvent,...arg) {
trace(e)
trace(arg)
}
//这样的好处是既保留了原有的event参数,又能够传递新的参数
//这个类就专门针对addListener注册的事件的执行方法~
给事件侦听启动的函数传递参数一
可以扩展Event类,象你这样简单的传参,也可以这样:
function create(f:Function,... arg):Function {
var F:Boolean=false;
var _f:Function=function(e:*){
var a:*=arg
if(!F){
F=true
a.unshift(e)
};
f.apply(null,a);
};
return _f;
}
stage.addEventListener(MouseEvent.MOUSE_DOWN,create(mouseDownHandler,"a","b"));
function mouseDownHandler(e:MouseEvent,...arg) {
trace(arg);
}