Event事件的clone方法

在自定义事件中,一般都是继承自flash.events.event,一个鲜为人知的细节是,对于重复事件的执行(不断调动dispatcher),as3不是每次创建一个myEvent事件对象,而是克隆原对象,使用的是myEvent.clone(),而且是自动调用的。在API手册中有如下描述:

clone()返回一个新的 Event 对象,它是 Event 对象的原始实例的副本。通常您不需要调用 clone();当您重新调度事件,即调用 dispatchEvent(event)(从正在处理 event 的处理函数)时,EventDispatcher 类会自动调用它。

新的 Event 对象包括原始对象的所有属性。

当您创建自己的自定义 Event 类时,必须覆盖继承的 Event.clone() 方法,以复制自定义类的属性。如果您未设置在事件子类中添加的所有属性,则当侦听器处理重新调度的事件时,这些属性将不会有正确的值。


一般来说,自定义自己的事件都必须覆盖原Event类的clone方法,因为这样你才能在克隆方法重新传递自定义属性,这非常重要!

class PingEvent extends Event {
var URL:String;

public override function clone():Event {
return new PingEvent(type, bubbles, cancelable, URL);
}
}

不然自定义属性值将不会改变!
原文地址:https://www.cnblogs.com/sumsung753/p/3821504.html