flex 中什么时候就要用到事件流机制?希望有心人士能详细解释。

百度网友fc9fe86
2013-04-07 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:139
采纳率:0%
帮助的人:136万
展开全部
Flex针对事件的处理分为两侧,一侧是产生和抛出(dispatch)事件,另一侧是监听和消费事件,这两侧是多对多的关系.
  事件的流转通常被划分为三个阶段:捕获阶段,命中阶段和冒泡阶段.
  在捕获阶段,Flash Player会自顶向下地检查是否存在事件对应的监听,直到抛出事件的目标对象的父容器为止.如果这些父对象上面存在对应的监听,且监听器的use_capture参数设置为true时,就会调用对应的回调函数.
  在命中阶段,Flash Player会检查抛出事件的目标对象自己是否存在对应的监听,如果发现对应的监听,则会调用对应的回调函数.
  在冒泡阶段,,Flash Player首先会检查事件本身的bubbles属性是否为true,如果为true,则会从抛出事件的目标对象的父容器开始,自下向上地检查是否存在对应的监听,如果这些父对象上存在对应的监听,就会调用对应的回调函数.
  Flex内建的事件主要位于三个包下面:spark.events.*,mx.events.*,flash.events.*.
  addEventListener的语法如下:
componentInstance.addEventListener(
event_type:String,
event_listener:Function,
use_capture:Boolean,
priority:int,
weakRef:Boolean
)
  需要注意的是,use_capture参数是指定对应的监听器在事件流转的哪个阶段起作用,如果设置为true,监听器会在事件的捕获阶段生效;如果设置为false,监听器则不会在捕获阶段生效,而在命中和冒泡阶段生效.它的默认值通常是false.
  如果想要一个监听器能够在事件流转的所有阶段生效,就必须调用addEventListener两次,一次设置use_capture为true,另一次设置use_capture为false.
  priority参数指优先级,优先级高的监听器会被首先执行,如果多个监听器的优先级相同或者都没设置优先级,则按照它们的添加顺序来执行.它的默认值是0,可以设置为正数或者负数.
  当抛出事件的目标对象不在显示列表中时,事件是不会经过三个阶段的,比如派发给Socket类的事件,就只有命中阶段,而没有捕获或者冒泡阶段.
  事件对象拥有两个属性:target和currentTarget.target是抛出事件的目标对象,而currentTarget是事件流当前的停留对象--即对此事件注册监听的对象.
  stopPropagation()和stopImmediatePropagation()的区别在于,stopPropagation()
不会阻止当前节点的其他监听器执行,而stopImmediatePropagation()会阻止当前节点的其他监听器执行.两者都阻止了事件流向下一个节点.
百度网友5821c82
2013-04-05
知道答主
回答量:6
采纳率:0%
帮助的人:2.8万
展开全部
你先了解事件机制,事件分三个阶段,冒泡、目标和捕获三个阶段,这就是你说的事件流
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式