AS3 dispatchEvent not working



我搜索了其他调度事件的例子,但没有一个对我有帮助。

这是我到目前为止所知道的。我知道事件侦听器已成功添加,但事件从未被分派。

在。mxml文件中:

function foo():void {
    var eventClassObj:MyEventClass = new MyEventClass();

}

在单独的。as文件中:

public class MyEventClass extends EventDispatcher 
{
    public function MyEventClass(target:flash.events.IEventDispatcher = null) 
    {
                    //ADD EVENT LISTENER
        this.addEventListener("test", testFunc, true);

                    //DEBUGGING PRINT STATEMENTS
        var str:String;
        if (this.hasEventListener("test")) {
                str = "EVENT LISTENER ADDED";
        } else {
                str = "NO LISTENER";
        }
        ExternalInterface.call("console.log", str);
                    //DISPATCH EVENT
        this.dispatchEvent(new Event("test", true));
    }

    //THIS MUST EXECUTE WHEN EVENT DISPATCHED
    private function testFunc(e:Event):void {
        ExternalInterface.call("console.log", "dispatch event successful");
    }
}

我对ActionScript3完全陌生。你知道为什么事件永远不会被发送吗?我在控制台中运行这个命令的输出只有:

EVENT LISTENER ADDED

而我期望的输出是:

EVENT LISTENER ADDED
dispatch event successful

我不明白为什么这不行。

问题源于您添加事件侦听器的方式。将useCapture设置为true,这样可以防止侦听器对冒泡事件做出反应。

如果更改以下行:

this.addEventListener("test", testFunc, true);

:

this.addEventListener("test", testFunc);

事件将由您的testFunc处理。

相关内容

  • 没有找到相关文章

最新更新