解析Flex事件执行流程

开发 后端
本文向大家简单介绍一下Flex事件机制,Flex事件执行流程大致可以分为三个阶段,分别是捕获阶段,目标阶段和冒泡阶段。

本文和大家重点讨论一下Flex事件机制,Flex事件执行流程大致可以分为三个阶段,下面为你一一介绍。

Flex事件机制

Flex事件执行流程大致可以分为三个阶段。

第一阶段为捕获阶段

第二阶段为目标阶段

第三阶段为冒泡阶段

所以:addEventListener方法注册的监听器有两种,第一种是处理捕获阶段的监听器(addEventListener的第三个参数useCapture 为true)
第二种就是处理目标和冒泡阶段的监听器(第三个参数useCapture 为false)。

第一阶段:捕获阶段流程

Flex会去查找事件的触发源,它是通过根显示元素(root display object)逐层向下寻踪,并从上往下,依次触发这些节点的当前Flex事件的处理函数(如果他们都用捕获阶段的监听器注册了这个事件)直到找到事件发起源头的父节点。并触发完父节点的这个事件为止。但它不会调用事件触发源节点的事件。

例如:
test.mxml文件下:
application节点--vbox(id=vb)节点--button(id=bt)节点。

如果在application的creationComplete中:将以上所有组件的click事件注册为捕获监听器。
如:
 

  1. addEventListener(MouseEvent.CLICK, btnClick2, true);    
  2. vb.addEventListener(MouseEvent.CLICK, btnClick3,true);    
  3. bt.addEventListener(MouseEvent.CLICK, btnClick4,true);   


如果在bt上点击,执行流程如下:
Flash Player会去查找Flex事件的触发源(bt),通过根显示元素(root display object)(这里就是application)逐层向下寻踪,并从上往下,依次调用它们的click事件(如果他们都注册了捕获阶段的click事件)直到找到事件的发起源头的父节点,上面例子中会找到vb,并执行完vb的click事件后,就不再查找下边的bt组件和执行它的click事件。

第二阶段:

一般情况下,第二阶段的目标阶段,也是执行mxml文档的目标节点配置的那个事件处理函数,然后再处理对应的监听器(处理目标和冒泡阶段的监听器)注册的那个处理函数。

 如果文档该节点,没有配置Flex事件处理,则只执行通过addEventListener注册的事件处理方法,否则,如果配置了,就先执行mxml的配置函数处理,接着处理通过监听器注册的函数。

最后就是冒泡阶段:
这个阶段与捕获阶段相反,它会从从目标节点的父节点开始依次向上查找并执行父节点的mxml配置事件和通过监听器注册的事件处理函数。(这些处理函数也是用处理目标和冒泡阶段的监听器注册的)

也就是说:捕获阶段的事件触发只能是用处理这个阶段的监听器去注册。目标和冒泡阶段的事件触发,也只能是处理这个阶段的监听器去注册。如果,要让同一个事件,在捕获阶段或目标和冒泡阶段都执行的话,需要用addEventListener注册两次,将第三个参数useCapture true和false各设置一次。

【编辑推荐】

  1. Flex事件处理三要素
  2. 从Flex Builder更名看Flash平台战略
  3. Flex及FlexBuilder2.0开发环境详解
  4. FlexBuilder3.0与Eclipse3.4的完美结合
  5. 学习笔记 FlexBuilder2.0中如何使用基于Lists的控件 

 

 

责任编辑:佚名 来源: csdn.net
相关推荐

2010-08-09 11:14:36

Flex事件处理

2010-08-06 10:03:42

Flex事件

2010-07-29 10:40:12

2010-08-06 10:24:56

Flex事件分发

2010-08-12 13:59:37

FlexList控件

2010-08-04 14:02:08

Flex事件机制

2010-08-13 14:05:24

Flex事件机制

2010-08-04 13:52:53

Flex事件机制

2010-08-12 15:35:44

Flex事件机制

2010-08-06 09:45:50

Flex事件机制

2010-08-02 09:43:00

Flex应用

2010-08-04 14:07:59

Flex事件机制

2010-07-29 10:27:30

Flex键盘事件

2010-08-04 11:15:22

Flex事件处理

2010-07-29 10:33:59

Flex键盘事件

2010-08-11 13:28:46

Flex行为

2010-08-04 14:34:35

Flex编程模型

2010-08-13 14:19:44

Flex绑定机制

2010-08-06 09:56:06

Flex事件机制

2010-08-02 10:18:06

Flex3教程
点赞
收藏

51CTO技术栈公众号