领悟自定义Event

今天在钻研一个pureMVC例子的时候,似乎恍然领悟了自定义Event的意义。自定义Event的不解一直困扰着我,具体说来就是我不知道自定义Event有什么用,怎么用。今天这一切烦恼或者是不解都不将存在。

 

自定义Event:用来清除注册表单中的用户名和密码,这些具体算法封装在方法clearForm中。

本文讲解自定义Event使用了两个文件,一个是UserForm.mxml(定义Event),另一个是UserFormMediator.as(注册和调用Event)。

 

...
<mx:Metadata>
  [Event('cancel')]
</mx:Metadata>

<mx:Script>
  <![CDATA[
    public static const CANCEL: String = "cancel"

    private function cancel():void{
      dispatchEvent(new Event(CANCEL));
    }
]]>
</mx:Script>

...
<mx:Button id="cancelButton" click="cancel();" />
...

其中[Event('cancel')]定义了Event.type为'cancel',在Script代码段中,通过cancel方法直接派发(dispatchEvent)用户自定义事件CANCEL(常量,存储的cancel)。这个方法会在取消按钮(cancelButton)点击时被调用。也就是说,当点击取消按钮后,会派发CANCEL事件。

 

CANCEL事件派发了,但是派发出去的事件有什么用呢?派发出去了事件,难道用户表单就可以被清空了么?并非如此,接着看。下面在UserFormMediator.as文件中注册CANCEL事件,并详细定义“清空”方法。

...
userForm.addEventListener(UserForm.CANCEL, onCancel);
...

private function onCancel(event:Event):void{
  clearForm();
}

private function clearForm():void{
  /*
      这里自定义清空用户表单的方法
  */
}
...

 userForm.addEventListener(...)注册了事件。括号中的第一个参数UserForm.CANCEL引用的是UserForm类(即UserForm.mxml,在Flex中美一个mxml都是一个类)中的CANCEL常量,其实就是“cancel”;第二个参数表示要调用的方法即onCancel,注意onCancel方法中的参数event必须是和UserForm.CANCEL对应的Event一致(不要忘记上一个文件定义的[Event("cancel")]是一个Event。这样通过调用clearForm方法就可以清除用户表单信息了。

 

在把思路整理一遍:

用户单击"取消“按钮,用户表单上的文字是如何消失的呢?

原本可以直接调用clearForm方法,但是我们这里不采用这一手段,我们采用自定义Event。这也是本文中心。

 

用户单击“取消”按钮,触发UserForm.mxml中的cancel方法;

cancel方法中派发CANCEL事件;

由于UserFormMediator.as文件中已经addEventListener了CANCEL事件,因此可执行被注册监听器方法onCancel;

onCancel监听器方法中调用并执行了clearForm方法(clearForm方法中定义了具体的清除用户表单的步骤)。

 

本文作者吴磊,转载请注明作者姓名和文章地址http://superwulei.iteye.com/admin/blogs/480829

 

你可能感兴趣的:(算法,Flex)