2012-02-06 3 views
1

IV는 ... 같은 ActionScript로하여 addEventListener 이벤트를 통해 인수를 전달하는addEventListener를 통해 명령문을 전달하는 방법은 무엇입니까?

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

을 시도하고 있지만, 나는 오류를 얻을.

IV는 Google에 시도하지하지만 운 :

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

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

rakeSoil는 최고 수준의 기능입니다 (: 당신이 당신이 원하는 방법 :

답변

2

시도 : 나는 항상 가치보다 더 많은 문제로 익명 함수를 발견

target.addEventListener ("pComp", targetListener); 

... 

private function targetListener (event:Event):void { 

    rakeSoil (event.currentTarget); 

} 
+0

또는 능력이 있다면 rakeSoil이 이벤트를 가져온 다음 currentTarget을 가져 오는 대신 currentTarget에 액세스 할 수 있습니다. –

0

을 할 경우 회신에 대한/

감사합니다 또는 클로저)에서 이벤트가 전달되면 해당 이벤트가 호출되고 이벤트가 '대상'에 액세스 할 수 있습니다.

편집 :

Closure (computer science)

4

대상은 이미 이벤트의 일환으로 전달에서보세요, 하나 event.currentTarget 또는 event.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이 자체적으로 내부에서 처리 할 수 ​​있어야하는 작업을 수행하고 있습니까?

관련 문제