我已经搜索过调度事件的其他例子,但没有人帮助过我。
这是我到目前为止所拥有的。我知道事件监听器已成功添加,但事件永远不会被分派。
在.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
我不知道为什么这不起作用。
答案 0 :(得分:2)
问题源于您添加事件侦听器的方式。您将useCapture
设置为true
,此类设置会阻止侦听器对冒泡事件做出反应。
如果您更改以下行:
this.addEventListener("test", testFunc, true);
为:
this.addEventListener("test", testFunc);
活动将由您的testFunc
处理。