AS3 dispatchEvent无法正常工作

时间:2014-05-21 07:16:47

标签: actionscript-3 flex event-handling dispatchevent event-listener

我已经搜索过调度事件的其他例子,但没有人帮助过我。

这是我到目前为止所拥有的。我知道事件监听器已成功添加,但事件永远不会被分派。

在.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

我不知道为什么这不起作用。

1 个答案:

答案 0 :(得分:2)

问题源于您添加事件侦听器的方式。您将useCapture设置为true,此类设置会阻止侦听器对冒泡事件做出反应。

如果您更改以下行:

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

为:

this.addEventListener("test", testFunc);

活动将由您的testFunc处理。