`
superwulei
  • 浏览: 107923 次
  • 性别: 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

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

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

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

    要创建自定义事件,你需要编写一个ESL(Event Socket Library)事件处理器。通过这个库,你可以发送和接收事件,与FreeSwitch进行交互。事件的定义通常在C语言的源代码文件中完成,包括事件名称、数据结构和处理函数...

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

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

    JavaScript加强之自定义event事件

    本文档主要介绍了如何在JavaScript中加强自定义event事件的使用。 首先,文档提到了在事件处理时应避免的一些不专业做法。例如,在循环中注册事件监听器会导致事件被重复绑定多次,造成性能问题和非预期的行为。...

    自定义控件与类模块+Event

    Public Event Clicked() ' 触发事件的方法 Public Sub OnButtonClick() RaiseEvent Clicked() End Sub End Class ' 在窗体模块中使用WithEvents Private WithEvents myCustomCtrl As CustomControl ' 事件...

    QT自定义窗口 自由拖动 自定义标题

    - 需要确保在适当的地方调用`event-&gt;accept()`以处理鼠标事件,防止其他事件处理器接收此事件。 4. **添加控件和布局**: - 在自定义窗口中添加其他控件,如按钮、文本框等,可以使用QLayout管理这些控件的位置和...

    QT添加自定义控件

    ### QT添加自定义控件 #### 一、引言 在使用QT进行界面设计时,开发者往往会遇到标准控件库无法完全满足特定需求的情况。此时,实现自定义控件成为解决问题的有效途径之一。本文旨在详细介绍如何在QT环境中快速...

    android自定义view自定义buttonDemo

    1. 在自定义Button类中,我们需要监听触屏事件,通常通过重写`onTouchEvent(MotionEvent event)`方法来实现。当检测到ACTION_DOWN和ACTION_UP事件时,分别表示按下和抬起,可以在此时改变背景颜色。 2. 使用...

    Android 自定义View视图

    5. **响应触摸事件**:如果需要,我们还可以覆盖`onTouchEvent(MotionEvent event)`方法,使自定义视图能够处理触摸事件。例如,当用户旋转罗盘时,可以更新指针的方向。 6. **属性解析**:为了在XML布局文件中设置...

    实现自定义view拖动、点击效果

    在Android开发中,自定义View是提升应用用户体验和界面独特性的重要手段。本文将深入探讨如何实现自定义View的拖动和点击效果,主要通过两种方法进行讲解:一是使用`setOnTouchListener`并重写`onTouch`方法,二是...

    EventID

    本文将深入探讨如何在C#中利用EventID在Event Viewer中手动添加自定义的Event ID,以及其背后的原理和应用。 首先,Event Viewer是Windows操作系统内置的一个实用工具,用于查看、管理和分析系统、应用程序和安全...

    百度地图自定义标注

    本话题将深入探讨“百度地图自定义标注”这一技术,以及如何实现手动定位功能。 首先,我们来理解“自定义标注”的概念。在百度地图API中,自定义标注是指用户可以根据自己的需求,在地图上添加个性化图标、文字或...

    java swt自定义控件

    本文将深入探讨在Java中使用SWT进行自定义控件的开发。 ### 1. SWT概述 SWT是一个开源的Java库,它的目标是提供与原生GUI库(如Windows的Win32 API,Mac OS的Cocoa,Linux的GTK+)类似的性能和功能。SWT使用JNI...

    C# WinForm 自定义 RadioButton

    public event EventHandler CustomCheckedChanged; private void OnCustomCheckedChanged() { if (CustomCheckedChanged != null) { CustomCheckedChanged(this, EventArgs.Empty); } } ``` 5. **模板样式**:...

    Qt5实现自定义标题栏

    在Qt开发中,自定义标题栏是一个常见的需求,它允许开发者根据应用的视觉风格和功能需求来定制窗口的顶部区域。Qt5作为一个强大的跨平台GUI工具包,提供了丰富的API和功能来实现这样的自定义。本篇文章将深入探讨...

    QT 按键根据自定义时间发送自定义事件

    在`event`方法中,我们捕获这个自定义事件并执行相应的处理逻辑。 这个功能在QT编程中非常实用,例如,可以模拟用户连续按下特定键序列,或者在特定时间间隔内触发特定操作,从而增强应用的交互性和自动化程度。...

    C# 自定义 事件 和 触发自定义事件,显示子窗体传过来的值

    自定义事件则是对系统内置事件的扩展,让我们能够根据具体需求创建和处理自己的事件。本篇文章将深入探讨如何在C#中自定义事件以及如何触发这些事件,同时展示如何在窗体之间传递数据,特别是从子窗体到父窗体。 ...

    android 自定义Editext

    在Android开发中,自定义`EditText`是一种常见的需求,它允许开发者根据应用的特定需求来扩展或修改系统提供的默认编辑框功能。自定义`EditText`可以实现诸如输入格式验证、特殊样式显示、交互效果增强等多种功能。...

Global site tag (gtag.js) - Google Analytics