首先简要介绍一下我的网站是如何运作的: 单击链接时,它会检查屏幕的左侧或右侧是否已显示某些内容(该网站看起来像一本书,所以我有一个左页面,我想显示信息和右侧页面)。如果已经显示某些内容,则隐藏它并显示新对象,同时启用该对象中的所有按钮(我有单独的功能来设置每个对象)。
此类EventListener的一个示例是:
pathTo.Button1.addEventListener(MouseEvent.CLICK, function():void {showText(side, object)});
我要做的是删除所有以前设置的EventListeners,而不必创建单独的函数来删除每个对象内的链接。
更短的版本:如何删除另一个对象中所有对象的所有EventListener?我想要存储的唯一变量是包含所有内容的对象。但是,对象中并不总是有EventListeners。
答案 0 :(得分:3)
您可以使用
检查现有的事件监听器hasEventListener(Event.TYPE)
您可以使用
删除事件侦听器removeEventListener(Event.TYPE, listenerFunc)
请注意,您必须引用listenerFunc以删除事件侦听器。
答案 1 :(得分:1)
您可以在Flex框架上进行一些猴子修补以包含该功能。
Doug McCune在this blog entry中介绍了如何执行此操作。编辑:误读了你的问题。如上所述,这仅适用于Flex组件。不确定是否可以对通用Flash组件使用相同的方法。遗憾。
答案 2 :(得分:1)
是的,这是可能的,解决方案就在这里:http://blog.andregil.net/2010/01/how-to-remove-event-listeners-with-parameters-closure/
您可以在侦听器函数上使用此代码段,以使其从自身中删除侦听器:
event.currentTarget.removeEventListener(event.type, arguments.callee);
)