2012-03-08 1 views

답변

2

이벤트 리스너는 EventDispatcher에서 파생 된 클래스에 속한 객체에 연결됩니다. 함수에 연결할 수 없습니다.

stage.addEventListener("myFunctionWasCalled", callback); 
myFunction(); 

public function callback(event:Event):void { 
    trace("callback executed"); 
} 

public function myFunction():void { 
    stage.dispatchEvent(new Event("myFunctionWasCalled")); 
} 
0

당신은 단순히 당신이 그것에 이러한 이벤트를 전달하고 듣는 단계를 사용할 수 있습니다

function cb(s:String):void { 
    trace(s); 
} 

function doit(f:Function):void { 
    // do something 
    f("Hi"); 
    // do some more stuff 
} 

doit(cb); 
3

인수로 함수 참조 (콜백)를 통과하여이 작업을 수행 할 수 있습니다 필요에 따라 함수 호출을 추가/제거하는 것만으로도 이벤트를 수신하고 싶을뿐입니다. 예 : 당신도 길을 추적하기가 매우 어려워 질 수 있습니다 흐름이 다음 선택을하는 경우

function somefunction():void{ 
    someobject.addEventListener(Event, eventhandler); 
    ... doing stuff 
    someobject.removeEventListener(Event, eventhandler); 
} 

지금 명심

.

당신이 정말로 개체의 삶과 죽음에 대해 걱정할 필요가있는 전형성은 함수 호출의 삶과 죽음을 비교합니다.

0

경우 :

0

개체에 이벤트 수신기를 연결하려면이 개체는 IEventDispatcher 인터페이스를 구현해야합니다. 따라서 Function 클래스를 확장하고 메소드를 추가 할 수 있습니다. AS3의 문서는 Function 최종 아니라고 말하지만, AS3 컴파일은 동의하지 : VerifyError: Error #1103: Class Bla cannot extend final base class.

그래서 짧은 대답은 : 당신이 함수에 이벤트 리스너를 부착 할 수 없습니다.

그러나 이미 당신이 할 수 언급 한대로 :

  1. 패스 콜백/어떤 시점에서 호출되는 함수에 대한 콜백 : function bla(callback1:Function, callback2:Function):void.
  2. 함수 실행 중 다른 객체의 이벤트를 전달합니다. 예를 들어 메서드를 사용하고 IEventDispatcher 메서드를 갖는 Functor 클래스를 만들 수 있습니다. 이 방법으로 함수 myFunctor.execute()을 호출하면 전달 이벤트를 얻을 수 있습니다.
관련 문제