`
061041033
  • 浏览: 38900 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

flex事件机制与事件流

 
阅读更多

flex 事件机制与事件流
2009-12-07 15:39
Flex事件机制
Flex事件机制是观察者模式,即首先要注册事件,事件分发后通过事件响应函数进行处理。
例如在AS3中:
button.addEventListener(“click”,onClick);//向button注册一个click事件
internal function onClick(evt:MouseEvent):void{txt.text=“click a button!”;}//事件响应函数

那么注册事件注册什么呢?通过addEventListener注册函数的参数可以看出,首先需要注册事件类型(第一个参数),然后注册响应函数,即事件发生后需要做什么事情,也就是说调用哪一个方法。

那么响应函数需要什么要求呢?响应函数必须要一个参数,指明注册的事件的事件类型,如上面的例子,我们注册的是一个鼠标事件类型,即鼠标单击事件。
注册的事件类型必须和响应函数的事件类型一致!

到底有哪些事件类型呢?除了有系统默认的事件类型外,我们可以定义自己的事件和事件类型。
简单的说,事件类型就是定义在事件类的常量属性。

事件流

1.捕获阶段(从根节点到子节点,检测对象是否注册了监听器,是则调用监听函数)
2.目标阶段(调用目标对象本身注册的监听程序)
3.冒泡阶段(从目标节点到根节点,检测对象是否注册了监听器,是则调用监听函数)
注:事件发生后,每个节点可以有2个机会(2选1)响应事件,默认关闭捕获阶段。
从上到下(从根到目标)是捕获阶段,到达了目标后是目标阶段,然后从目标向上返回是冒泡阶段。

怎样理解事件流?
当事件发生时,FLEX通过事件的分发器EventDispatcher进行事件分发,分发的顺序是:从上往下到达目标,然后从下往上,从目标开始返回。如上面1、2、3所说的那样,这里就会有一个问题,在事件的流经过程中,不是目标的对象如果注册了事件,也有了相应的事件响应函数,那么不是目标的对象响应了事件的处理,这怎么办呢?
由于上面说的那样,addEventListener在只有如上两个参数的牧人情况下是关闭捕获阶段的,也就是说事件流是从目标阶段开始的,然后是冒泡阶段,当出现容器包含控件的时候,可以使用判断
if(evt.target == evt.currentTarget)
来确定当前事件流上的当前流经对象是否就是目标对象,如果是就进行相应的处理。

移除对象的事件流:removeEventListener(),参数与注册事件相同。
阻断事件流中目标对象的后继事件,即通过了目标阶段后阻止冒泡阶段:
event类的方法:public function stopImmediatePropagation():void

Event类

Event 类作为创建 Event 对象的基类,当发生事件时,Event 对象将作为参数传递给事件侦听器。 如MouseEvent 、KeyboardEvent ,更多的可以查参考手册。
Event类有几个常用的公共属性:
是否冒泡:bubbles;
目标对象:target;
所处阶段:eventPhase;
当前对象:currentTarget;
从参考手册可以event类的构造函数:

Event () 构造函数 public function Event(type:String, bubbles:Boolean = false,cancelable:Boolean = false)
创建一个作为参数传递给事件侦听器的 Event 对象。
参数 type:String — 事件的类型,可以作为 Event.type 访问。
bubbles:Boolean (default = false) — 确定 Event 对象是否参与事件流的冒泡阶段。 默认值为 false。
cancelable:Boolean (default = false) — 确定是否可以取消 Event 对象。 默认值为 false。
在flash.events包中可以看见系统自带的事件。

如何自定义事件

自定义事件,也就是向监听器传递自己定义的事件类型,同时可以通过事件传递参数。
1.创建自定义事件名称的Event
dispatchEvent(new Event(“myEvnet”,true,false));

2.创建自定义事件类
Public class MyEvent extends Event{
….
}
dispatchEvent是EventDispatcher的方法:public function dispatchEvent(event:Event):Boolean将事件调度到事件流中。 事件目标是对其调用 dispatchEvent() 方法的 EventDispatcher 对象。
这句话就是说是哪个对象调用 dispatchEvent() ,那么该事件就会被分发到那个对象的事件流中,如果没有指明对象,那么默认为this对象,即应用程序。这时该事件被分发到应用程序对象的事件流中,而没有分发到特定对象的事件流中。一旦两个对象的不是父子关系(控件树),那么事件流不会在这两个对象之间有联系,那么事件不会被响应;如果是,则还是要响应。(这种情况dispatchEvent的参数Event对象的参数必须是三个,如上)。dispatchEvent就是说明有了新的事件,只要注册了该事件,就可以响应

分享到:
评论

相关推荐

    Flex事件机制详细说明

    在Flex框架中,事件是应用程序与用户交互的核心机制之一。它可以由多种触发源启动,包括但不限于用户的输入(如键盘按键、鼠标点击)、外部数据加载完成(例如WebService请求返回)或组件状态的变化(如组件创建或...

    flex事件机制分析

    这与DOM事件流类似,但Flex对捕获阶段的支持并不完全。首先,事件会在目标节点上触发,然后向上冒泡到父级组件,直到到达应用程序的根节点。这个过程称为冒泡阶段。在Flex中,大部分事件默认都是从目标阶段开始冒泡...

    flex事件机制的分发

    总的来说,Flex事件机制是通过事件流的分发实现组件间的交互,自定义事件则提供了更灵活的数据传递和处理方式。理解并熟练运用这一机制,能帮助开发者更好地设计和实现复杂的Flex应用程序。对于Flex开发者来说,掌握...

    Flex4.5事件机制

    Flex4.5事件机制是Flex应用程序开发中的核心组成部分,它基于ActionScript 3.0的事件模型,并且遵循DOM3级事件规范。事件机制使得开发者能够轻松响应用户交互和系统事件,为Flex程序员提供了强大且直观的处理工具。 ...

    Flex的事件机制笔记

    在本文中,我们将深入探讨Flex事件的各个方面,包括事件流、事件类型、自定义事件的创建与处理。 首先,Flex的事件流分为三个阶段:冒泡阶段、捕获阶段和目标阶段。冒泡阶段是从最具体的子组件开始,沿着组件层次...

    flex 事件流原理

    Flex 事件流是Flex应用程序中事件处理的核心机制,它使得组件之间能够有效地通信和响应用户交互。在深入探讨之前,我们需要理解几个基本概念。 1. **事件机制**:事件是Flex中的一种通信方式,当特定条件满足时,...

    flex的事件详解

    事件流是Flex事件处理的关键组成部分,它描述了事件对象如何在显示列表中传播。事件流分为三个阶段: 1. **捕获阶段**:事件从最顶层容器开始向下传播,直到达到目标对象。这一阶段主要用于提前捕获事件,以便在...

    flex安全机制详解

    ### Flex安全机制详解 #### 一、Flex安全机制概述 Flex是一种用于构建高效且美观的Web应用程序的技术,它能够提供丰富的用户体验。为了确保安全性,Flex采用了一套完整的安全机制来控制不同域之间的通信,其中包括...

    FLEX事件监听样例(JAVA代码)

    在本文中,我们将深入探讨基于Java的Flex事件监听机制,这是一种强大的工具,允许开发者响应用户交互和应用程序状态的变化。Flex事件模型是ActionScript 3.0的核心组成部分,它与Java的事件处理方式有所不同,但可以...

    关于flex事件的讲解

    综上所述,理解和熟练运用Flex事件机制对于开发高质量的Flex应用程序至关重要。通过有效地利用事件监听、派发和管理,可以创建出响应迅速、功能丰富的用户界面。学习并掌握这些知识点,将使你在Flex编程中游刃有余。

    flex-event.zip_flex

    Flex事件机制是Adobe Flex应用程序开发中的关键组成部分,它允许组件之间进行有效的通信和状态管理。在Flex中,事件是用于传递信息的结构化对象,它们从一个源头(通常是组件)发送到其他感兴趣的接收者(监听器)。...

    flex工作流源码

    Flex的数据绑定机制使得视图和模型之间的数据同步变得简单,而DAO则负责与后端数据库或服务的数据交互。 6. **Common_Draw**:这可能是与图形绘制和编辑相关的代码,可能用于创建流程图、符号或图表。Flex的绘图API...

    FLEX 事件机制-自定义事件介绍

    在Flex编程中,事件机制是实现组件间通信和交互的关键部分。自定义事件允许开发者创建特定于应用的事件类型,以便更好地控制数据流动和响应处理。以下是对FLEX自定义事件的详细介绍: 首先,自定义事件是通过继承...

    flex 关于事件的例子

    在Flex中,事件处理是实现用户交互和组件间通信的重要机制。本例将详细解析“flex 关于事件的例子”,帮助初学者理解Flex中的事件系统。 1. **事件模型** Flex使用事件驱动模型,当发生特定情况(如用户点击按钮或...

    flex 事件学习

    Flex事件学习是Adobe Flex框架中的一个重要组成部分,它允许开发者创建响应用户交互的动态应用程序。Flex事件模型基于ActionScript 3.0的事件模型...通过实践`EventDemo1`这样的示例,你可以更深入地掌握Flex事件机制。

    工作流拖拽 flex

    总的来说,“工作流拖拽 Flex”结合了Flex的图形绘制能力、事件处理机制和数据绑定,为用户提供了直观、易用的工作流设计环境。开发者可以根据具体需求扩展和定制,以满足各种复杂业务场景。通过熟悉和掌握这些技术...

    精通flex3.0 精通 Flex3.0 LCDS ActionScript 事件

    《精通Flex3.0:LCDS与ActionScript事件详解》 Flex 3.0是Adobe公司推出的基于Flash Player运行时的开发框架,主要用于构建富互联网应用程序(RIA)。它提供了强大的组件库、数据集成以及丰富的用户体验设计,使得...

    用Flex+Java进行软件开发速成篇

    通过本文的学习,读者可以掌握Flex的基本概念和核心技术,特别是对事件机制的理解将有助于更有效地开发出响应式和用户友好的应用程序。同时,结合Java后端进行交互的能力也是现代企业级开发不可或缺的一部分。希望...

    Flex与java通讯

    Flex提供了事件驱动的错误处理,而Java可以通过异常处理来捕获和处理错误。 9. **Performance Optimization** 优化通信性能包括减少数据传输量、合理设计数据结构、缓存策略等。AMF的使用已经大大提高了性能,但还...

    Flex 开发流程 了解Flex开发的流程

    Flex遵循事件流模型,包括三个阶段: - **捕获阶段**:事件从最顶级的父节点向下传播到目标节点,检测沿途的节点是否注册了事件监听器。 - **目标阶段**:事件到达目标节点,执行该节点上注册的监听器。 - **冒泡...

Global site tag (gtag.js) - Google Analytics