• flex 事件机制 冒泡和捕获


    发生事件时,该事件在事件流的三个阶段中移动:
    捕获阶段,该阶段从显示列表层次结构的顶部流动到目标节点之前的节点;
    目标阶段,该阶段只包括目标节点;
    冒泡阶段,该阶段从目标节点的后续节点沿显示列表层次结构向上往回流动。
    EventDispatcher 类实现 IEventDispatcher 接口,并且是 DisplayObject 类的基类。 EventDispatcher 类允许显示列表上的任何对象都是一个事件目标,同样允许使用 IEventDispatcher 接口的方法。
    事件目标是 Flash ® Player 事件模型的重要组成部分。

    事件目标是事件如何通过显示列表层次结构这一问题的焦点
    当发生鼠标单击或按键等事件时,Flash Player 会将事件对象调度到从显示列表根开始的事件流中
    然后该事件对象在显示列表中前进,直到到达事件目标,然后从这一点开始其在显示列表中的回程
    在概念上,到事件目标的此往返行程被划分为三个阶段:
    、、捕获阶段包括从根到事件目标节点之前的最后一个节点的行程,
    、、目标阶段仅包括事件目标节点,
    、、冒泡阶段包括回程上遇到的任何后续节点到显示列表的根。
    通常,使用户定义的类能够调度事件的最简单方法是扩展 EventDispatcher。 如果无法扩展(即,如果该类已经扩展了另一个类),则可以实现 IEventDispatcher 接口,创建 EventDispatcher 成员,并编写一些简单的挂钩,将调用连接到聚合的 EventDispatcher 中。
    二、说明 首先明确几个概念
    1、显示列表根:假如你有abc 三个panel c在b中 b在a中这样的嵌套关系 那么c-->b-->a   a就是列表的根
    2、目标:假如你在c上发了一个事件那么c就是事件的目标 有些复杂控件有click事件 不过发事件的目标不是它本身 那个currenttarget才是它本身
    3、事件传递的流程:首先你派发事件在c上 事件首先从a-->b-->c-->b-->a这样一个完整的循环
    4、捕获阶段:事件在a-->b的这个阶段(注意和b-->a不同)
    5、目标阶段 仅当事件到达c的时候
    6、冒泡阶段 b-->a这样经过的阶段
    三、具体应用
    当你在c上面派发了一个事件   然后你想在c的顶层a上监听到
    你可能这么做
    首先你在c上this.dispatchEvent(new Event("cevent",false)); 这样发了一个事件
    蓝色字体 意味着这个事件只会在捕获和目标阶段 a->b->c
    然后你在a上监听这个事件 a.addEventListener("cevent",function():void{trace("原始论坛目标发出的事件");},false);
    红色字体 意味着你打算 让侦听器只在目标或冒泡阶段处理事件 就是c->b->a
    四、简单说来就是 你发出的事件走的是a->b->c的阶段 而你侦听只想侦听b->a阶段c只走了一次所以不会检测到c的事件
    任何一个false改成true就可以了
    蓝色改成true意味着事件在所有过程传递
    红色改成true意味着侦听捕获阶段
    再简单说 新建事件不冒泡 默认侦听只侦听冒泡
  • 相关阅读:
    python网络编程学习笔记(3):socket网络服务器
    Python编码爬坑指南
    ROT13 维基百科,自由的百科全书
    ZODB + Traversal Wiki Tutorial¶
    ZODB programming guide¶
    利用新浪api获取ip归属地 QtSharp 博客园
    用python做了个桌球瞄准器
    Python运维工具介绍1–fabric
    python httplib2 使用代理出错
    第四回 基类中的修饰符,应该根据你对架构的理解去定义它们,没有绝对的
  • 原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100569.html
Copyright © 2020-2023  润新知