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;
    }
}

その後、Spriteを拡張するクラスにリスナーを追加しました

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);

このすべての後、トレースが得られなかったため、イベントは発生しません。質問は次のとおりです。何が間違っているのでしょうか。

前もって感謝します!

UPD:とは異なるクラスからイベントを送信していることに注意してください。SomeClassそのクラス extendsEventDispatcherです。

4

1 に答える 1

2

SomeClass という名前のクラスからディスパッチしていますか?

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

SomeClassイベント ハンドラーがトリガーされるには、内部にいる必要があります。または、 as in のインスタンスを使用してディスパッチする必要がありますSomeClass

var e = new SomeEvent(SomeEvent.SOMETHING_CHANGED);
e.propery1 = "AAA";
e.propery1 = "BBB";
someClassInstance.dispatchEvent(e);
于 2012-09-30T17:54:50.577 に答える