2012-09-30 2 views
0

에서 사용자 지정 이벤트 사용자 지정 이벤트를 보낼 수 없습니다 : 그 후은 내가 만든 거라고 플래시

class SomeEvent extends Event { 
    public static var SOMETHING_CHANGED = "somethingChanged"; 

    public var propery1: String; 
    public var property2: String; 

    override public function clone():Event { 
     var evt: GraphicsEvent = new SomeEvent(type, bubbles, cancelable); 
     evt.propery1 = propery1; 
     evt.propery2 = propery2; 
     return evt; 
    } 
} 

에게 나는 마침내 내가 이벤트를 전달 스프라이트

class SomeClass extends Sprite { 
    public function SomeClass() { 
     this.addEventListener(SomeEvent.SOMETHING_CHANGED, somethingChangedHandler); 
    } 
    .... 
    public somethingChangedHandler(e: SomeEvent) { 
     trace("Got event!!"); 
    } 
} 

과 확장 클래스에 리스너를 추가

var e = new SomeEvent(SomeEvent.SOMETHING_CHANGED); 
e.propery1 = "AAA"; 
e.propery1 = "BBB"; 
dispatchEvent(e); 

이 모든 후에 나는 아무 흔적도 얻지 못했다. 그러므로 이벤트는 cauhgt가 아니다. 여기에 질문이 있습니다 : 무엇이 잘못 되었습니까?

미리 감사드립니다.

UPD :SomeClass과 다른 클래스의 이벤트를 보내고 있습니다.이 클래스는 EventDispatcher까지 확장됩니다.

+0

GraphicsEvent, 난 그게 전부가 올바른 유형을하지 추측 한 첫 번째 코드의 복제 기능? –

+0

두 번째 예제에는 GraphicsEvent라는 이벤트 유형이 포함되어 있지만 SomeEvent.SOMETHING_CHANGED는 그렇지 않습니다. –

+0

글쎄, 나는 그것을 놓쳤다. 내 코드에서 나는 어디에서나'GraphicsEvent'를 가진다. – Eugeny89

답변

2

SomeClass라는 클래스에서 파견 중이십니까?

var e = new SomeEvent(SomeEvent.SOMETHING_CHANGED); 
e.propery1 = "AAA"; 
e.propery1 = "BBB"; 
dispatchEvent(e); 

이벤트 핸들러가 트리거 얻을 수 있도록 SomeClass 내부해야합니다. 또는 당신은 같이 SomeClass의 인스턴스를 사용하여 파견 할 필요가있다.

var e = new SomeEvent(SomeEvent.SOMETHING_CHANGED); 
e.propery1 = "AAA"; 
e.propery1 = "BBB"; 
someClassInstance.dispatchEvent(e); 
+0

글쎄, 이벤트 (이벤트의 인스턴스)가 컨트롤러 또는 모델 (EventDispatcher를 확장)에서 전송되고 스프라이트로 처리되는 많은 예제를 보았습니다. 그것은 내가 같은 클래스에서 이벤트를 던져야 만하는 starange과 편리하지 보인다. – Eugeny89

+3

당신은 말하지 않습니다. 기본적으로 그 이벤트를 던질 수있는 클래스의 인스턴스에서 이벤트를 수신해야합니다. 귀하의 경우에 당신은 이것으로 파견 된 사건, 즉 SomeClass를 청취하고 있습니다. 표시 목록에있는 DisplayObject 객체에 버블 링 메 커닉이 사용되는 예제를 보았을 수 있습니다. 그렇게하려면 다른 객체에서 이벤트를 전달해야하지만 해당 객체는 사용자가 수신하는 객체의 표시 목록 하위 항목이어야합니다. 먼저 객체를 추가해야합니다. – borisgolovnev