2010-04-28 64 views
2

首先简要介绍我的网站如何工作: 单击链接时,它会检查屏幕的左侧或右侧是否已显示某些内容(网站看起来像是一本书,所以我有一个左页我想显示信息和右页)。如果已经有东西显示它隐藏它并显示新对象,则与此同时启用该对象内的所有按钮(我有单独的功能来设置每个对象)。AS3:在不知道金额或名称的情况下移除EventListeners

这样的EventListener的一个例子是:

pathTo.Button1.addEventListener(MouseEvent.CLICK, function():void {showText(side, object)}); 

我试图做的是去除所有的前一组事件侦听器,而无需去除链接创建单独的函数中的每个对象,以及。

较短的版本:如何删除另一个对象内所有对象上的所有EventListeners?我想存储的唯一变量是包含所有内容的对象。然而,对象中并不总是有EventListener。

+0

可能的重复:http://stackoverflow.com/questions/184099/as3-is-there-a-way-to-remove-unknown-event-listeners-from-objects – 2010-04-28 18:32:45

回答

3

您可以使用

hasEventListener(Event.TYPE) 

检查现有的事件侦听器,您可以使用

removeEventListener(Event.TYPE, listenerFunc) 

请注意,你必须有一个参考listenerFunc删除事件侦听器移除事件侦听器。

+0

然后,我猜这是行不通的我正在创建我的功能?如果我必须为每个调用创建单独的函数,我可能只需为每个对象创建一个“卸载”函数? – bjrnt 2010-04-28 18:36:25

+0

不一定。 arguments.callee会让你引用listenerFunc,尽管不建议使用它。 – jonathanasdf 2010-04-28 20:29:25

1

你可以在Flex框架上做一些猴子补丁来包含该功能。

Doug McCune介绍了如何在this blog entry中做到这一点。

编辑:误读你的问题了一下。如上所述,这仅适用于Flex组件。不知道您是否可以对通用Flash组件使用相同的方法。抱歉。

相关问题