Actionscript 3 了解dispatchEvent(evt.clone())

Actionscript 3 了解dispatchEvent(evt.clone()),actionscript-3,apache-flex,flash-builder,Actionscript 3,Apache Flex,Flash Builder,我对动作脚本有点陌生,并试图理解现有的代码。这里有MyRestServiceEvent和MyRestService。MyRestService类中定义了许多方法,它们可以调度许多事件,但有些方法实现了dispatchEvent(evt.clone())我无法理解。我知道MyRestServiceEvent已经实现了clone(),那么这个dispatchEvent(evt.clone())有什么作用呢做什么?如果有人能给我解释一下这个过程,我真的很感激 下面是这两个类的简要介绍 事件类 事件调度

我对动作脚本有点陌生,并试图理解现有的代码。这里有MyRestServiceEvent和MyRestService。MyRestService类中定义了许多方法,它们可以调度许多事件,但有些方法实现了
dispatchEvent(evt.clone())我无法理解。我知道MyRestServiceEvent已经实现了clone(),那么这个
dispatchEvent(evt.clone())有什么作用呢做什么?如果有人能给我解释一下这个过程,我真的很感激

下面是这两个类的简要介绍

事件类

事件调度程序类

clone()
方法创建事件对象的重复实例。它通过创建类的新实例并将其属性设置为与原始实例相同的值来实现。自定义事件可以重写此方法以正确处理引用类型的复制


要重新分发事件时,需要克隆,以便将其只读属性(气泡、可取消、currentTarget、target)再次设置为新值。

代码示例中的克隆是完全冗余的-dispatchEvent实际分发克隆(因此需要在自定义事件中[重写]克隆方法)所以没有必要给它一个克隆。此代码的工作原理完全相同:

dispatchEvent(evt);

至于事件被重新修补的原因,我想这是因为事件冒泡被设置为false。因此,重新修补事件可以有效地将其“冒泡”到应用程序的另一层,以便更多的“东西”可以侦听它。

我想您已经解释了应该在事件类中声明的
clone()
方法的定义。但是,我想知道为什么在
dispatchEvent(evt.clone())
中再次克隆它。换句话说,再次调度克隆事件会发生什么。
public class MyRestService extends EventDispatcher
    {

        // ton of methods here but below is an example of one of the functions 

        private function checkAdminErrorHandler(evt:MyRestServiceEvent):void
        {
            dispatchEvent(evt.clone());
        }
}
dispatchEvent(evt);