- 浏览: 13975 次
最新评论
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 是否开启捕获功能,如果注册时打开,移除也要打开。
)
发表评论
-
DEMO:字符串反转
2012-07-06 09:52 717这个例子主要是让用户输入的字符串反转之后显示出来,主要是用 ... -
用正则表达式做内容关键字链接
2012-07-06 09:46 684private void rc() { strin ... -
基于ASP.NET的JQueryUI控件开发(1) - JQueryScriptManager
2012-07-06 09:30 389前面基本实现了ASP.NET MVC的 JQueryUI控 ... -
Javascript模式- 命令模式(Command)
2012-07-05 20:45 748前言 博客园谈设计 ... -
自定义android RadioPreference组件
2012-07-03 13:44 1389今天用到了android的preferences组件,可是 ... -
flex4 设置 圆角
2012-07-02 12:51 857height="100%" left= ... -
flex AS中TabNavigator子项后报超出索引 commitProperties解决
2012-07-02 12:51 541height="200" > ... -
Dom4j java编程
2012-07-02 12:51 833dom4j 是一种解析 XML 文档的开放源代码 XML ... -
Event propagation事件传播
2012-07-02 12:51 787当事件被触发时,F ... -
flex 给DataGrid每行加上tooltip
2012-07-02 12:51 689在初始化时加上tooltip的字体大小 mx.sty ... -
Flex4自定义事件类型Event的相关应用
2012-07-01 10:18 761基于松耦合的概念 自定义事件类型将取到很重要的作用 当您 ... -
Flex事件机制一
2012-07-01 10:17 769一:事件流机制 由于OOP编程将程序看成一个个对象、 ... -
Flex FTP文件上传
2012-07-01 10:17 659Flex FTP文件上传原理就是利用Flex Socket ... -
使用Flex实现FTP文件上传功能
2012-07-01 10:17 953最近需要使用Flex实现Ftp文件上传功能,Google到 ... -
未来的移动游戏
2012-06-30 16:43 594未来的移动游戏 2011年07月14日 手机游戏是娱乐 ... -
游戏战歌网 仿soso音乐 flex播放器
2012-06-30 16:42 748游戏战歌网 仿soso音乐 flex播放器 2010年08月 ... -
Flash游戏开发技术分析
2012-06-30 16:42 660Flash游戏开发技术分析 2010年12月31日 1、 ... -
FLEX和Actionscript开发FLASH游戏 3-2
2012-06-30 16:42 360FLEX和Actionscript开发FLASH游戏 3-2 ...
相关推荐
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