如何向事件监听器传送额外的参数

如何向事件监听器传送额外的参数


问题摘要

在FLEX文档中所述的是,如果你要向监听器传送参数,那么你最好使用MXML标签,但是在这里要展示给你的是如何使用AS脚本完成。

解决摘要

使用内联函数

解释

solution is very simple, basically for  following scenario :
arbitrary button called ABCButton,function ABCButtonListener needs to listen to click event and also receive extra parameter 

"myPrivateSpecialObject"
object.

 you do following :

private function ABCButtonListener(e:MouseEvent,specialObj:Object): void {
Alert.show(specialObj.name);
}


private function methodWhereyouDostuffAndRegisterListener(): void {
var myPrivateSpecialObject:Object = {name:"Special String Ingredients for Orange"};

      ABCButton.addEventListener(MouseEvent.CLICK,function (e:MouseEvent) : void {
ABCButtonListener(e,myPrivateSpecialObject);
});
}
P.S -----------------

you can use same structure to register listener for more than one button,for example :


private function methodWhereyouDostuffAndRegisterListener(): void {
var myPrivateSpecialObject:Object = {name:"Special String Ingredients for Orange"};

      ABCButton.addEventListener(MouseEvent.CLICK,function (e:MouseEvent) : void {
ABCButtonListener(e,myPrivateSpecialObject);
});



myPrivateSpecialObject = {name:"Special Ingredients for Apple"};

OtherButtonButton.addEventListener(MouseEvent.CLICK,function (e:MouseEvent) : void {
ABCButtonListener(e,myPrivateSpecialObject);
});

}


            above  code registers same listener for two buttons but before registering second listener , we try to modify
myPrivateSpecialObject 
  so, reference is changed to have different value, but if you assume now each listener received different value , its not correct, they will both received latest assigned value .  overall inline function is good technique to pass   any number of parameters to a listener as long as listener is ready for those parameters.        
           
      

Related files for download


bin-release1.zip

main.swf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值