2011-09-22 3 views
0

클래스 내의 특정 기능이 실행될 때 해고되는 맞춤 이벤트를 만들었습니다. 내 메인 스크립트 내에서이 이벤트를 듣습니다. 타임 라인의 프레임 중 하나입니다. 좀 더 나은 내 질문을 이해하는 코드를 참조하십시오.맞춤 이벤트가 발신자에게 도착하지 않습니다.

내 CustomEvents.as 위의 함수를 호출하고, 반환 된 이벤트를 수신하는 이벤트

public function exitPage(){ 

     dispatchEvent(new CustomEvents(CustomEvents.PAGE_EMPTY)); 

     var mainLinkExitMove:Tween = new Tween(mainLink, "y", Strong.easeOut, mainLink.y , -150, 3, true);   
     var gridExitMove:Tween = new Tween(grid, "y", Strong.easeOut, grid.y , -150, 3, true); 

} 

그리고 마지막으로 코드를 전달 FRONT_PAGE.as 내

package { 
    import flash.events.Event; 
     public class CustomEvents extends Event { 

      public static const PAGE_EMPTY:String = "Page Empty"; 

      public function CustomEvents(type:String) { 
       super(type); 
       trace("hello from within the event class!"); 
      } 
     } 
} 

기능. frontPage는 코드에서 앞에서 선언 한 FRONT_PAGE.as 클래스의 객체입니다.

function gotoSubPage(){ 
    frontPage.exitPage(); 

    frontPage.addEventListener(CustomEvents.PAGE_EMPTY, ef_FrontPageFinishedExiting); 
    function ef_FrontPageFinishedExiting(event:CustomEvents){ 
     trace("Event has been caught"); 
    } 
} 

CustomEvents 생성자에 도착하면 그 내부의 추적 내용이 인쇄됩니다. 이벤트가 함수 호출자에게 전달되지 않는 것 같습니다.

간단한 사용자 정의 이벤트 사용 방법에 대한 좋은 예제를 찾을 수 없었으므로 이것이 어떻게 될 것으로 생각됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

0
가 작동하지 않는 것처럼 당신이 말 :

END_LINK하면 관심 또한 gotoSubPageef_FrontPageFinishedExiting를 선언하기 전에, 카트 이벤트를 전달하는 방법을 호출 한 후 이벤트를 수신하고 있기 때문에 그것은 보이는

, 그것은 외부의해야 클래스 내의 그 메소드.

이 대신보십시오 : 사용자 정의 이벤트가있을 때

function gotoSubPage() { 
    frontPage.addEventListener(CustomEvents.PAGE_EMPTY, ef_FrontPageFinishedExiting); 
    frontPage.exitPage(); 
} 

function ef_FrontPageFinishedExiting(event:CustomEvents) { 
    trace("Event has been caught"); 
} 

또한 그것뿐만 아니라 clone 메소드를 오버라이드 (override)하는 것이 좋습니다 :

package 
{ 
    import flash.events.Event; 

    public class MyEvent extends Event 
    { 
     public static const SOMETHING_HAPPENED:String = "somethingHappened"; 

     public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) 
     { 
      super(type, bubbles, cancelable); 
     } 

     override public function clone():Event 
     { 
      return new MyEvent(type, bubbles, cancelable); 
     } 
    } 
} 
+0

감사합니다, 당신의 솔루션을했다! Event 클래스의 작동 방식을 알지 못합니다. 단지 / clone() 메서드가 무엇인지 설명해 주시겠습니까? 감사합니다. – getack

+0

새로운 유형을 생성하기 위해 새로운 이벤트 클래스를 정의 할 필요는 없습니다. 그 유형을 상수 일 경우, 괜찮지 만 상수는 단지 상수 값을 저장하는 파일에 저장 될 수 있습니다. http://flexdiary.blogspot.com/2007/08/dispatching-events.html –

+0

@AmyBlankenship 사실인데, 내가 생략 한 것 (그리고 귀하의 게시물이 설명하는 것)은 사용자가 필요로하는 이벤트와 함께 일부 데이터가 전달되기를 원하는 경우였습니다. 행사. – kreek

관련 문제