2011-04-28 3 views
1

dispatchEvent를 사용하여 "Beep2"이벤트를 잡는 데 필요한 것을 정리하려고합니다. Im는 dispatchEvent "Beep2 true"의 추적 결과를 생성 할 수 있지만 "DoNext"함수는 실행되지 않습니다.AS3 사용자 지정 이벤트가 문서 클래스에서 실행되지 않음 (DispatchEvent actionscript 사용)

이 코드는 CustomEvent 클래스를 사용하여 이벤트 클래스를 확장합니다. 지금까지 지식의 제 한계에 대한 권리, 그래서 어떤 도움을 주시면 감사하겠습니다. :)

감사합니다.

패키지 //Main.as (문서 클래스)

import flash.display.MovieClip; 
import flash.events.Event; 

public class Main extends MovieClip 
{ 
    public var ftasks:MovieClip; 
    public function Main() 
    { 
     ftasks = new filetasks(); 
     addChild(ftasks); 
     ftasks.addEventListener(CustomEvent.BEEP2, DoNext); 
    } 

//not firing 
    public function DoNext (evt:Event) 
{ 
     trace("DoNext"); 
    } 


} 

패키지 //CustomEvent.as

//Extend Event class. 
import flash.events.Event; 
public class CustomEvent extends Event 
{ 
    public static const BEEP1 ="Beep1"; 
    public static const BEEP2 ="Beep2"; 

    //Declare Event Constructor 
    public function CustomEvent(type:String, bubbles:Boolean) 
    { 
     super(type, bubbles); 
     type = this.type; 
     bubbles = this.bubbles; 
     trace(type, bubbles); 
    } 

    public override function clone():Event 
    { 
     return new CustomEvent(type, bubbles); 
    } 
} 

패키지 //filetasks.as

import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.events.Event; 

public class filetasks extends MovieClip 
{ 
    public var Ref; 

    public function filetasks (_Ref) 
    { 
     Ref = _Ref; 
     dispatchEvent(new CustomEvent(CustomEvent.BEEP2, true)); 
    } 

    public function done (evt:MouseEvent) 
    { 
     dispatchEvent(new CustomEvent(CustomEvent.BEEP1, true)); 
    } 
} 

답변

2

네 문제는 사건이 해고 된 것 같아. EventListener도 추가했습니다.

+1

네, 맞아, filetask 함수의 생성자에서 dispatch 이벤트를 빠르게 제거하면 트릭을 만들 수 있습니다. –

+0

빠른 응답을 위해 @Tobias에게 감사드립니다. –