Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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
Actionscript 3 removin事件侦听器_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 removin事件侦听器

Actionscript 3 removin事件侦听器,actionscript-3,flash,Actionscript 3,Flash,我将事件侦听器添加到25个movieclips中。如果使用了其中一个事件侦听器,我希望从所有事件侦听器中删除所有事件侦听器 var myMvc:movieclip; myMvc.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent) { tasiSuruklemeyeBasla(e,myMvc,1,1); IEventDispatcher(e.currentTarget).removeEventListener(

我将事件侦听器添加到25个movieclips中。如果使用了其中一个事件侦听器,我希望从所有事件侦听器中删除所有事件侦听器

var myMvc:movieclip; 
myMvc.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent)
{
   tasiSuruklemeyeBasla(e,myMvc,1,1);
   IEventDispatcher(e.currentTarget).removeEventListener(e.type,argu‌​ments.callee);
});

这里要做的是为每个侦听器创建一个单独的匿名函数对象。这没有多大意义,因为事件处理程序的代码对于所有侦听器都是相同的。也许您正试图将一些数据与每个事件处理程序一起传递,以便能够判断哪些剪辑已被触发。有很多更好的方法可以实现这一点,而无需为每个侦听器创建单独的处理程序

无论如何,为了能够在任何时候删除侦听器,您必须在某个地方保存对处理程序的引用。例如,您可以声明一个事件处理程序函数,并将其引用传递给所有侦听器(您最好在文档类中声明它,但它也适用于时间线代码)


谢谢你的回答。这不是解决我问题的方法,但它是一种领先的方法。因为我正在将参数传递到tasiSuruklemeyeBasla()函数中的另一个函数中。
var eventHandler:Function = function(e:MouseEvent):void
{
   var target:MovieClip = e.target as MovieClip;
   tasiSuruklemeyeBasla(e,target,1,1);
   target.removeEventListener(e.type,argu‌​ments.callee);
};

myMvc.addEventListener(MouseEvent.MOUSE_DOWN, eventHandler);

// you can do that any time
myMvc.removeEventListener(MouseEvent.MOUSE_DOWN, eventHandler);