加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

由Flex消息机制说开去

发布时间:2020-12-15 03:39:41 所属栏目:百科 来源:网络整理
导读:在Flex开发过程中,遇到这样一个问题,场景如下: 接到新需求,需要将特定分类下Item添加到容器里,每个Item需要配上对应的图标,要求占击Item和图标都要做同样的处理。 Item和 图标类本身已经有对应点击的事件监听函数。 其实Flex本身我也是半路出家,按照

在Flex开发过程中,遇到这样一个问题,场景如下:

  1. 接到新需求,需要将特定分类下Item添加到容器里,每个Item需要配上对应的图标,要求占击Item和图标都要做同样的处理。
  2. Item和 图标类本身已经有对应点击的事件监听函数。

其实Flex本身我也是半路出家,按照以前的思路就是设置监听函数,接受图标发出的事件响应,完成处理。由于项目进度不是很急,突然想到JS在DOM处理时支持捕获事件和冒泡事件两种模型,从父->子->父,所以想Flex是不是也是同样的机制。如果猜想正确的话,就可以能过设置让Item直接处理事件。


Flex消息处理分三个阶段,?捕获(capture),执行(target) 和冒泡(bubble) 。

  1. 捕获(capture):在这个阶段,Flash Player会去查找事件的触发源,它是通过根显示元素(root display object)逐层向下寻踪,直到找到事件的发起源头。在这个阶段监视器(listener)默认是不会收到任何消息的(默认只在target和bubble阶段收到 消息)。
  2. 目标执行阶段(target)
  3. 冒泡阶段(bubble):最后的这个阶段其实就是第一个阶段的逆向过程。它就是在事件代码执行完毕后通过子元素逐级向父元素发出该事件,一直到根元素。在这个阶段你不需要特别的为监听器指定什么,你只要正常的注册事件就可以了。监听器会在该阶段收到通知。但前提是该事件是能够bubble的。

如果你想在捕获阶段让listener收到消息并有所动作,那么你可以在注册的时候改变第三个参数为true,如下面的方法:object.addEventListener(MouseEvent.CLICK,onClick,true);


明白原理很重要,可以使事情事半功倍。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读