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

在这之后我没有任何痕迹,因此事件不是 cauhgt。问题来了:做错了什么?

先感谢您!

UPD:请注意,我正在从不同于SomeClass该类扩展的类发送事件EventDispatcher

4

1 回答 1

2

你是从名为 SomeClass 的类中调度的吗?

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

必须在内部SomeClass才能触发事件处理程序。SomeClass或者您需要使用as in的实例来调度它。

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