flex里通过addEventListener指定回调函数时指定更多参数
转载自:http://virgos.iteye.com/blog/480221
?
在flex里通过addEventListener函数给控件动态加载click事件侦听函数时,除了事件本身传递的Event类型参数外,还需要传递更多的参数,在网上找了一段代码,用起来还不错,张贴到这里。
1. package 2. { 3. public class EventArgExtend 4. { 5. public function EventArgExtend() 6. { 7. } 8. 9. public static function create(f:Function,... arg):Function 10. { 11. var F:Boolean=false; 12. var _f:Function=function(e:*,..._arg) 13. { 14. _arg=arg 15. if(!F) 16. { 17. F=true 18. _arg.unshift(e) 19. } 20. f.apply(null,_arg) 21. }; 22. return _f; 23. } 24. public static function toString():String 25. { 26. return "Class JEventDelegate"; 27. } 28. } 29. }
?=========================================== 使用的方式:
txtShow.addEventListener(MouseEvent.CLICK,EventArgExtend.create(clickHandler,1,"str"));
?
1. private function clickHandler(e:Event,...arg):void 2. { 3. Alert.show(arg[0].toString()); 4. Alert.show(arg[1].toString()); 5. }
?还有另外一个方法,没有封装效果,不过代码更加容易理解:
?
1. var sayHello:String = "欢迎光临www.FlashJ.cn -Flash,Ria技术博客"; 2. btn1.addEventListener(MouseEvent.CLICK,function (e:MouseEvent){clickHandlerWithArg(e,sayHello)}); 3. function clickHandlerWithArg(e:MouseEvent,arg:String):void 4. { 5. var out:String= e.target + "发出事件(有参数) :" + arg; 6. trace(out); 7. }?