`

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事件机制详解 #### 一、事件简介 在Flex框架中,事件是应用程序与用户交互的核心机制之一。它可以由多种触发源启动,包括但不限于用户的输入(如键盘按键、鼠标点击)、外部数据加载完成(例如WebService...

    Flex 事件机制,flex入门学习

    【Flex 事件机制详解】 Flex 事件机制是 Flex 应用程序中不可或缺的一部分,它使得组件之间能够有效地通信,响应用户交互以及管理应用程序状态。在深入理解 Flex 事件机制之前,我们需要先了解一下基本概念。 1. *...

    Flex事件机制(通俗易懂)

    ### Flex事件机制详解 #### 一、引言 Flex是一个强大的框架,用于构建高性能的Web应用程序。对于初学者而言,理解和掌握Flex中的事件机制是非常重要的一步。本文将深入探讨Flex事件机制的基础概念、事件注册通道、...

    flex事件机制的demo

    Flex ActionScript3.0事件机制的Demo, 举例说明了事件的三个阶段,事件的派发,事件的侦听,事件的拦截,自定义事件等相关知识点. 以上知识点在Demo中都有体现,初学者请仔细分析代码,加强理解,多调试、修改、验证以加深...

    flex事件机制分析

    Flex事件机制是Adobe Flex应用程序中处理用户交互和组件通信的核心组成部分。它主要涉及事件流、事件处理程序以及事件对象的概念,这些在构建富互联网应用程序(RIA)时扮演着至关重要的角色。下面将对这些概念进行...

    flex事件机制的分发

    Flex事件机制是Adobe Flex框架中一个关键的概念,它允许组件之间通过事件进行通信。在Flex中,事件机制的分发主要包括三个主要阶段:捕获阶段、目标阶段和冒泡阶段。下面将详细介绍这些阶段以及自定义事件的创建与...

    Flex的事件机制笔记

    Flex事件机制是Adobe Flex应用程序开发中的核心组成部分,它允许组件之间进行有效的通信和交互。对于初级Flex程序员或爱好者来说,理解这一机制至关重要。在本文中,我们将深入探讨Flex事件的各个方面,包括事件流、...

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

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

    关于flex事件的讲解.rar

    Flex事件机制是Adobe Flex框架中的核心组成部分,它允许开发者创建响应用户交互的动态应用程序。在Flex中,事件处理是通过事件监听器来实现的,这些监听器可以注册到UI组件或者应用程序本身,以便在特定事件发生时...

    关于flex事件的讲解

    ### 关于Flex事件机制的深度解析 #### 一、引言 在Flex开发过程中,事件机制是理解应用程序交互的关键所在。对于许多初学者而言,掌握Flex中的事件处理机制显得尤为重要。本文将详细介绍Flex中的事件机制及其应用...

    flex的事件详解

    通过以上分析,我们可以看到Flex的事件处理机制不仅强大且灵活,而且遵循标准,易于学习和使用。无论是在构建复杂的用户界面还是实现复杂的业务逻辑方面,事件都起着至关重要的作用。掌握Flex的事件机制,有助于...

    Flex4.5事件机制

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

    flex-event.zip_flex

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

    flex事件讲解

    阅读这份文档将有助于深入理解Flex事件机制,并在实际开发中更高效地利用它们。 总之,理解Flex的事件模型对于创建响应式和高效的RIA至关重要。熟练掌握事件处理可以让你的Flex应用程序更加互动,提升用户体验。...

    flex 事件学习

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

    flexevent.rar_flex

    Flex事件机制是Adobe Flex应用程序开发中的关键组成部分,它允许组件之间进行通信,处理用户交互,以及实现复杂的逻辑。本文将深入探讨Flex事件的基础知识、事件模型、事件生命周期、事件监听器,以及如何自定义事件...

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

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

    Flex-Menual-CHN.zip_flex_flex 官方文档

    六、Flex事件机制 1. 事件:在Flex中,事件是对象之间的通信方式,如点击按钮、数据加载完成等。 2. 事件监听器:通过addEventListener方法注册,处理特定事件的发生。 七、Flex图形和动画 1. Flex提供了强大的图形...

    Flex晋级培训

    #### 一、Flex事件机制 Flex中的事件机制是其核心功能之一,用于处理用户交互及程序内部状态的变化。在Flex中,事件可以被看作是一种特殊的对象,它允许代码的不同部分之间传递信息。事件通常由用户界面元素(如...

Global site tag (gtag.js) - Google Analytics