2012-02-06 63 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應該能夠獨立處理的東西?