ActionScript-3不止一次调用addEventListener

时间:2010-06-02 12:51:06

标签: flex actionscript-3

我有一点问题,我真的不明白我是否可以在同一个对象(和相同的回调函数)上多次使用addEventListener如果这种情况我可以遇到溢出问题,或者简单的flex非常聪明,不能在相同的堆栈中再次添加相同的功能

例如:

var t:CServiceObj = _rModel.userGetBoardJoined(); 
t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk);
t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk);
t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk);

2 个答案:

答案 0 :(得分:1)

正如你所说,Flex是“聪明的”,即使你在同一个实例上多次订阅一个事件,那么处理程序只会调用一次(无论你传递多少个addEventListener)。

答案 1 :(得分:1)

我尝试对Button进行快速测试,如果将addEventListener多次添加到同一个函数中也没关系 - 它会被调度一次。

但是,您可以设置类似这样的内容

t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk);
t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk2);

其中onDataOk2使用event参数调用onDataOk。

有趣的说明 一个不同的测试,我在mxml标签中添加了一个click处理程序,并在AS中添加了一个单击处理程序,两者都指向同一个函数。当点击按钮时,两个处理程序都会被调度,因此Flex在幕后做了一些事情来适应这个功能。