flex学习-----事件机制的工作流程
- 博客分类:
- 技术杂绘
8.2 事件机制的工作流程
8.2.1 关于事件流
目标对象:派发事件的对象
当事件发生后生成一个携带数据的对象,然后检查目标对象是否存在显示层中,并遍历从根容器一直到目标对象所在位置的所有对象,以树形势表示。自动检测所经过的节点是否注册了监听器。
事件流暗运行流程分为3步:
捕获阶段:捕获事件 capturing,从根节点开始顺序而下,检测每个节点是否注册了监听器。同时,Flex 将事件对象的currentTarget 值改为当前正在检测的对象。如果注册了监听器,则调用监听函数。
目标阶段:检测目标的监听器 targeting:触发在目标对象本身注册的监听程序
冒泡阶段:事件冒泡 bubbling:从目标节点到根节点,检测每个节点是否注册了监听器,如果有,则调用监听函数。
每个事件对象都有以下属性:
target:事件的派发者
currentTarget:当前正在检测的的对象,帮助跟踪事件传播的过程。
默认情况下,捕获功能处于关闭状态,一般没有必要进行捕获跟踪。
事件只在bubbles 属性为true 时才进行冒泡,可以冒泡的事件包括:change、click、doubleClick、keyDown、keyUp、mouseDown、 mouseUp。并且不能在一个监听器中同时打开捕获和冒泡功能,要做到这一点,只能注册两个监听器,分别实现。
target:派发事件的目标对象
currentTarget:事件流当前正经过的目标对象
bubbles:是否打开了冒泡功能
eventPhase:事件流当前的阶段,1:捕获,2:目标,3:冒泡
addEventListener(
type:String, 事件的类型
listener:Function, 监听函数
useCapture:Boolean = false, 是否打开捕获功能
priority:int = 0, 监听器优先级别
useWeakReference:Boolean = false 是否使用弱引用
)
如果useCapture 为true,打开了捕获功能,则该组件的冒泡阶段被取消。
只有可视化的对象有3个阶段,而像XML等非可视化对象只有目标阶段。
8.2.2 事件对象
EventDispatcher 是派发事件的武器,经它派发的事件对象必须是Event类型或者Event的子类。
Event对象中包含目标对象存放的数据,这些数据都成为Event的属性,以供侦听器使用:
Event的属性:
bubbles:只读,布尔,事件是否开启冒泡功能
cancelable:只读,布尔,处理事件的默认行为是否可以停止。主要针对一些系统事件,如果值为true,则Event的preventDefault方法可以使用,否则不可用。
currentTarget:只读,对象,当前正在调用监听器的对象
eventPhase:只读,整数,返回事件流正经历的阶段。1:捕获,2:目标,3:冒泡
target:只读,派发事件的目标对象
type:只读,字符,事件类型。比如鼠标点击事件的类型:click,并被定义为常量:MouseEvent.CLICK
构造函数:
Event(
type:String, 事件类型
bubbles:Boolean = false, 是否冒泡
cancelable:Boolean = false 是否可以停止
)
Event 的方法:
isDefaultPrevented:判断preventDefault 是否已经被调用
preventDefault:停止事件的默认行为。针对一些系统事件,cancelable为true时才可用。
stopImmediatePropagation:停止当前的事件流传播,包括当前正在处理的对象
stopPropagation:停止当前的事件流传播,但不会停止当前正在处理的对象
8.2.3 侦听和响应事件--一个侦听键盘事件的例子
要侦听一个事件,首先要创建一个函数来作为事件处理器,然后将这个函数注册给相应的时间类型。
this.addEventListener(KeyboardEvent.KEY_DOWN,keyHa ndler);
注册键盘按下事件,交给keyHandler处理,也可以在Application标签添加事件:
keyDown="keyHandler(event)" 这种情况无法移除事件。
注册了事件监听器,使用完毕后,必须使用removeEcentListener 方法删除监听函数:
removeEcentListener(
type:String, 事件类型
listener:Function, 监听函数
useCapture:Boolean = false 是否开启捕获功能,如果注册时打开,移除也要打开。
)
发表评论
-
有关不调用库函数的字符串操作!
2012-07-06 09:52 707此博客仅作工作、学习,以及技术共享、交流之用。 你可以以 ... -
#笔试#字符串 匹配 正则表达式 C++
2012-07-06 09:46 862同学去上海同济城市规划设计研究院时要求上机写的题目 写 ... -
详细设计文档规范
2012-07-06 09:30 669i am now in university(HI ... -
模拟Google首页(dwr实现ajax) 弹出补全搜索结果
2012-07-05 20:45 910上周末听了在用友工作的两个学长的一个小讲座,虽然时间不长, ... -
初步认识view组件焦点切换原理
2012-07-03 13:44 782这段时间因为自己要实现一套组件焦点切换机制,今天认真研究了 ... -
Flex 调用WEBService 接口实现天气预报功能.
2012-07-02 12:47 638height="364" ... -
Flex做的颜色器
2012-07-02 12:47 553此效果用对象的toString()方法来格式化输出字符串类 ... -
flex LineChart 的demo
2012-07-02 12:47 600... -
[ActionScript3.0][My flex]读书笔记四之 图标模块应用实例
2012-07-02 12:47 5401.chartdata.xml 2.MyCo ... -
flex显示数字时钟和日期
2012-07-02 12:47 632private function init():void{ ... -
Flex代码覆盖率测试工具
2012-07-01 10:11 760lex代码覆盖率测试工具 作者:忙碌命 1.支持函 ... -
Event propagation事件传播
2012-07-01 10:11 683当事件被触发时,F ... -
Flex FileReference 在Firefox 浏览器情况下的异常情况
2012-07-01 10:11 894Question: Flex 3.5 或 Flex 4 + ... -
Flex事件机制一
2012-07-01 10:11 500一:事件流机制 由于OOP编程将程序看成一个个对象、 ... -
Flex缓存客户端
2012-06-30 16:36 497Flex缓存客户端 2010年11 ... -
flex草芥回收机制.
2012-06-30 16:36 486flex草芥回收机制. 2011年07月19日 原文Un ... -
Flash Game Development with Flex and Actionscript(一)
2012-06-30 16:36 336Flash Game Development with Fle ... -
使用Flex和Actionscript开发Flash游戏―(十)
2012-06-30 16:36 259使用Flex和Actionscript开发 ...
相关推荐
1 11 跟我StepByStep学FLEX教程------Event事件机制 1 12 跟我StepByStep学FLEX教程------Demo6之自定义事件&自定义组件 1 13 跟我StepByStep学FLEX教程------自定义事件&自定义组件 1 14 跟我StepByStep学FLEX...
Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本
flex特效学习,提供了很多Flex组件-行为与特效类组件
spring-flex-1.5.0.M2-dist.zip spring-flex-1.5.0.M2 spring-flex-1.5.0.M2.jar SBI
Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring
flex-messaging-core jar包
flex-messaging-4.7.3最新版本的jar
跟我StepByStep学FLEX教程------王一松
跟我StepByStep学FLEX教程------王一松.pdf
flex-messaging-common
flex 实例 ----示波器的制作 flex 实例 ----示波器的制作
flex-messaging-proxy.jarflex-messaging-proxy.jarflex-messaging-proxy.jarflex-messaging-proxy.jar
H3C FlexServer R690 服务器操作系统安装 肖永新-2014年10月整理 项目经验娄底教育局云平台 注!在引导安装操作系统之前,首先要配置raid,否则找不到硬盘(raid配置,详见R 690服务器raid配置部分),其次配置...
flex-messaging类包是flex结合JAVA开发通信使用
flex-messaging-core-amf1.7
flex-2.6.4.tar.gz
flex-iframe-1.4.6.rar (code google)
flex-messaging-remoting.jarflex-messaging-remoting.jarflex-messaging-remoting.jarflex-messaging-remoting.jar