2012-02-06 39 views

回答

2

尝试增加一个额外的方法为你的事件侦听器:

target.addEventListener ("pComp", targetListener); 

... 

private function targetListener (event:Event):void { 

    rakeSoil (event.currentTarget); 

} 
+0

或者,如果您有能力,您可以让rakeSoil参与事件,然后访问currentTarget,而不是接受currentTarget。 – 2014-10-02 14:56:51

0

如何,这是你想要的回答:

{ 
     var target:EventDispatcher = ...; 
     Function rakeSoil = function (e:Event):void 
     { 
      // handle target 
     } 

     target.addEventListener("pComp", rakeSoil); 
    } 

rakeSoil是一个一流的功能(或关闭),当事件被调度时,它将被调用,并且你可以访问它中的'target'。

编辑:

看一看Closure (computer science)

4

目标作为事件的一部分已经过去了,无论是event.currentTargetevent.target将是你想要的。

如果您想要传递其他内容,请创建一个自定义事件。将该属性添加到自定义事件。

0

我一直觉得匿名函数是更多的麻烦比他们的价值。我只会遵循标准的事件处理程序代码布局。它更正式,会花更多的精力在前面,但没有歧义,这是更具可读性当您返回到它从现在起一年(减少头刮时间​​):

// Target extends EventDispatcher 
private var target:Target; 

public function listenToTarget(); 
{ 
    target = new Target(); 
    target.addEventListener("pComp", pCompHandler); 
} 

private function pCompHandler(event:Event):void 
{ 
    target.rakeSoil(); 
} 

虽然,现在我更仔细地看待它,为什么你有这个对象做一些Target应该能够独立处理的东西?