Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 重复事件侦听器的数量?_Flash_Actionscript 3 - Fatal编程技术网

Flash 重复事件侦听器的数量?

Flash 重复事件侦听器的数量?,flash,actionscript-3,Flash,Actionscript 3,在as3中,如果向对象添加相同的事件侦听器,例如 txtField.addEventlistener( Event.CHANGE, changeCb, false, 0, true ); txtField.addEventlistener( Event.CHANGE, changeCb, false, 0, true ); 我需要删除该侦听器两次吗 如何获取对象上的事件侦听器列表或数量?否,不需要删除两次。您将只创建一个注册。 此外,您正在使用弱引用(通过将最后一个参数usewakrefere

在as3中,如果向对象添加相同的事件侦听器,例如

txtField.addEventlistener( Event.CHANGE, changeCb, false, 0, true );
txtField.addEventlistener( Event.CHANGE, changeCb, false, 0, true );
我需要删除该侦听器两次吗


如何获取对象上的事件侦听器列表或数量?

否,不需要删除两次。您将只创建一个注册。 此外,您正在使用弱引用(通过将最后一个参数usewakreferences设置为true)。因此,更容易进行推理

文档中有一节描述了为同一侦听器函数创建两个侦听器注册的情况


不,在这种情况下,不需要删除侦听器两次

在两种情况下,需要删除多个侦听器:

  • 如果添加两个具有不同侦听器函数的事件侦听器:
  • addEventlistener(Event.CHANGE,changeCb,false,0,true); addEventlistener(Event.CHANGE,changeCb2,false,0,true);
  • 如果在捕获阶段将一个事件设置为激发:
  • addEventlistener(Event.CHANGE,changeCb,false,0,true); addEventlistener(Event.CHANGE,changeCb,true,0,true); 因此,您只需要删除以不同方式注册的事件

    您无法使用Flex中开箱即用的内容获得事件侦听器的计数,但可以使用
    hasEventListener(type)
    检查它是否具有特定类型事件的事件侦听器


    但是,由于提供了源代码,您可以“Monkey patch”UIComponent或FlexSprite类来添加此功能,如中所述。事实上,你甚至不必这么做。示例中提供了代码。很酷。

    1)是的,2)我认为你不行。我很想知道这是否可能,但我的理解是,确切的数字是“隐藏的”。好吧,我会改正的。我仍然很好奇(我相信你也很好奇)如何确定有多少听众在“倾听”。要想学习一门优秀的事件管理课程,请查阅Danny Miller的: txtField.addEventlistener( Event.CHANGE, changeCb, false, 0, true ); txtField.addEventlistener( Event.CHANGE, changeCb2, false, 0, true ); txtField.addEventlistener( Event.CHANGE, changeCb, false, 0, true ); txtField.addEventlistener( Event.CHANGE, changeCb, true, 0, true );