`
superwulei
  • 浏览: 106489 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

领悟自定义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

 

2
0
分享到:
评论

相关推荐

    教你7步实现flex自定义Event与参数传递.doc

    教你7步实现flex自定义Event与参数传递.doc

    event-calendar:自定义日历聚合物组件,支持显示事件

    自定义日历聚合物组件,支持事件显示。 支持每月、每周、每天和列表视图。 演示 安装 使用安装组件: $ bower install event-calendar --save 或 。 用法 导入 Web Components 的 polyfill: &lt; script src =...

    VB6用户自定义事件EVENT实例.zip

    VB用户自定义事件绕来绕去的,翻了半天书也不好弄清楚,最后还是仔细翻看MSDN的事例弄有了。我把它贴成了VB可运行工程,试运行一下就很有体验感了,学起来省时省力。取之于MSDN用之于需要的学习,不需要消耗积分。

    JavaScript加强之自定义event事件

    代码如下: $().ready(function(){ for(var i=0;i&lt;5;i++){ /** * 这种写法不专业,如果处于循环里,就会注册5次事件,...“hahahaha”&#41;; // });... $(“#aa”).bind(“click”,function(){ alert&#40;“oooooo”&#41;...

    FreeSwitch完整的自定义模块定义和改善自定义事件的例子

    FreeSwitch完整的自定义模块定义和改善自定义事件的例子,详细介绍见博客:https://blog.csdn.net/xxm524/article/details/126211171

    javascript实现自定义事件

    javascript实现自定义事件,纯javascript不含vbscript。 通过自定义的HashMap.js和EventManager.js实现自定义事件的监听addEvent和发布fireEvent

    自定义控件与类模块+Event

    RaiseEvent 触发类、窗体或文档中在模块级声明的事件; WithEvents 声明一个对象时,可以使用该对象的事件

    Qt自定义图形实现拖拽效果

    本文实例为大家分享了Qt自定义图形实现拖拽...void QEventView::paintEvent(QPaintEvent *event) { resize(115+m_iLen,36); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.se

    vue2-event-calendar-Vue2的事件日历,支持自定义事件项和日历标题。-Vue.js开发

    中文文档:television:现场演示安装// npm npm install vue2-event-calendar --save //纱线纱线添加vue2-event-calendar导入和用法Import //导入组件导入'vue2-event-calendar / dist / vue2-event -calendar.css'从'...

    JAVA自定义事件详解

    JAVA自定义事件详解 java.util.EventObject java.util.EventListener

    Qt自定义事件Demo

    在Qt中,你可以创建自定义事件类型,以便在应用程序中传递自定义的信息。...4. **接收和处理自定义事件:** 在事件接收者处重载`event(QEvent *event)`函数,检查事件的类型,并根据需要处理自定义事件。

    EventLog_Analyzer.zip

    Eventlog Analyzer日志管理系统、日志分析工具、日志服务器的功能及作用  Eventlog Analyzer是用来分析和审计系统及事件日志的管理软件,能够对全网范围内的主机、服务器、网络设备、数据库以及各种应用服务系统等...

    GTK自定义接口函数

    gtk自定义好的接口函数,以及封装好的list,滑动密码锁等等,方便使用

    pb_eventid

    PB中自定义事件ID含义 Event ID 含义 内容浅析

    一个可创建Google Calendar Event hyperlinks 的ASP.NET 自定义控件源码

    一个可创建Google Calendar Event hyperlinks 的ASP.NET 自定义控件源码。

    Windows Event Log 日志管理工具

    Windows Event Log 日志管理工具,功能包括添加Event Source,添加Event Log,删除Event Source,删除EventLog. 可用于Web项目发布中对自定义日志的管理。 因需要一定系统访问权限,请使用管理员权限登录使用。

    Event_Log_Explorer_4.3.8.zi

    + Added Custom columns - you can extract information from description and display it in event list. + Added alerts by event type. * NewAPI: Event description could be missing for some events. Fixed. *...

    自定义滑动开关view

    自定义一个滑动开关view,同时响应滑动和点击事件。但有个疑问为什么click事件在onTouchEvent的switch的case up之后,即使我把super.onTouchEvent(event)写在switch之前的?

    Event Log Tool源代码

    Windows Event Log 日志管理工具,功能包括添加Event Source,添加Event Log,删除Event Source,删除EventLog. 可用于Web项目发布中对自定义日志的管理。 因需要一定系统访问权限,请使用管理员权限登录使用。

Global site tag (gtag.js) - Google Analytics