`

【AS3】为什么AS3.0事件流机制会有捕获阶段、目标阶段、冒泡阶段三个阶段

 
阅读更多

原问题:事件机制有三个步骤,捕获,目标和冒泡。请问,在目标阶段都已经执行了需要执行的函数,为什么还要冒泡呢?

回答:
以前以 经说过很多次了,如果在as2中,事件模式是实时拦截的,意思简述就是一个影片剪辑包裹一个按钮的时候,对按钮和影片剪辑同时侦听处理的话,影片剪辑事件 会优先于按钮被截获执行,而令到内层的按钮代码失效,所以在as2中会用到很多非as资深程序员头痛的小技巧!!! 手机发表 分段发吧


所以在as3中对事件架构做了一个很大的调整,基本上完全放弃as2的事件处理方式,所有显示对象均继承自displayObjectO类,而此类又继承自EventDispatcher,意味着所有的显示对象均天生拥有了事件派发的能力

说了这么多,其实as3中的 特色 事件流机制 是 与 显示列表 相辅相承的,对以上两点有良好的理解是 合理运用事件流机制的前提

测试过了一下,证实整个显示列表是严格按照容器的方式进行事件流的

 

回到第一点,as2是实时拦截的,而as3就是走了三个阶段,捕获,目标,冒泡

具体 意义其实就是为了令整个事件流过程中的各环节都能对事件进行消费


比如 一个鼠标事件发生在 一个 MC包裹一个按钮 按钮里有文字的情况下



首先肯定是捕获MC的了,然后向内层走捕获到 按钮,因为按钮simpleButton是属于非容器对象,看上面类图,所以事件流目标节点就是它了,这时是目标阶段(到达最底一层目标),然后再到冒泡阶段,沿着捕获阶段记录的节点一级一级向上访问


这时你可能要问了,为什么不直接捕获阶段一走向下走就OK呢, 这是因为盒子模式,事件应该是由最内层的盒子派发出来的,但要进入到内层盒子,就肯定要先一层层经过包裹层的遍历,才能到达目标,然后才在冒泡阶段中,令到各节点进行事件的消费




为什么要各事件进行消费啊?

这里举个例子,比如你做一个 TitleWindow ,对话框影片剪辑,按以前的做法肯定就是  在关闭按钮上写

parent.visible = false;


但站在面向对象编程的角度来说,这个应该在对话框的绑定类文中侦听  MouseEvent.CLICK事件,

然后关闭按钮根本就不用添加任何代码,因为事件存在冒泡,当按钮被点击的时候,冒泡事件过程中,因为上层包裹(对话框)对此事件侦听了,所以会响应



冒泡事件的基本作用其中一个就是这种,令到沿途各节点自身处理自己的业务,反正事件流就是

负责通知 

对对应事件进行侦听的节点

通知它 所侦听的事件发生了,让它做对应的操作处理罢了






意味着所有的显示对象均天生拥有了事件派发的能力

这句是说,所有显示对象都会默认响应触发鼠标事件 键盘事件 等等等等  底层管理的交互行为事件,不用用户手动派发事件

分享到:
评论

相关推荐

    通俗易懂地理清js事件流中的捕获阶段,目标阶段和冒泡阶段的具体运行顺序

    众所周知,事件流分为三个阶段冒泡分为捕获阶段,目标阶段和冒泡阶段, 这三个阶段到底是如何运行的呢?如果给同一个事件绑定上冒泡和捕获的事件到底会怎样触发呢? 下面我用dom2级事件函数来变换捕获和冒泡,用...

    as3.0编程手册.pdf

    本手册为在 ActionScript™ 3.0 中开发应用程序提供了基础。为了充分理解所介绍的理念和 技巧,您应已熟悉了一般的编程概念,如数据类型、变量、循环和函数。您还应了解面向对 象编程的基本概念,如类和继承。如果...

    【JavaScript源代码】JavaScript中事件冒泡机制示例详析.docx

     DOM事件流(event flow )存在三个阶段:事件捕获阶段、 处于目标阶段、 事件冒泡阶段。 事件捕获(event capturing):通俗的理解就是,当鼠标点击或者触发dom事件时,浏览器会从根节点开始由外到内进行事件...

    javascript 中事件冒泡和事件捕获机制的详解

    绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获 true,事件捕获;false,事件冒泡 一般默认false,即事件冒泡 Jquery的e.stopPropagation会阻止冒泡,意思就是到DOM为止,祖先级的事件就不要触发了...

    Javascript事件流(事件捕获、事件冒泡),事件委托(代理)

    事件从触发到完成响应一般分为三个阶段:捕获阶段,目标阶段、冒泡阶段。 事件流 页面中接受事件的顺序,也就是事件响应的顺序。大部分浏览器默认都是用IE的“事件冒泡”顺序(从里层向外层);而网景采用“事件捕获...

    DOM事件流,冒泡 | 捕获 | 委托 ,详解

    DOM事件流包括三个阶段: 捕获阶段 目标阶段 冒泡阶段 首先发生的是事件捕获,为截获事件提供了机会。然后是实际的目标接收到事件。最后一个是冒泡阶段,在这个阶段对事件做出响应 事件发生时会在元素节点之间按照...

    【JavaScript源代码】基于事件冒泡、事件捕获和事件委托详解.docx

     事件冒泡、事件捕获和事件委托 在javascript里,事件委托是很重要的一个东西,事件委托依靠的就是事件冒泡和捕获的机制,我先来解释一下事件冒泡和事件捕获: 事件冒泡会从当前触发的事件目标一级一级往上传递,...

    js事件监听机制(事件捕获)总结

    添加事件的js方法也很多,有直接加到页面结构上的,有使用一些js事件监听的方法,由于各个浏览器对事件冒泡事件监听的机制不同

    Android-传统事件捕获和冒泡的流程解析

    传统事件捕获和冒泡的流程解析

    JS中事件冒泡和事件捕获介绍

    谈起JavaScript的 事件,事件冒泡、事件捕获、阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免。 事件捕获阶段:事件从最上一级标签开始往下查找,直到捕获到事件目标(target)。 事件冒泡阶段:...

    【JavaScript源代码】javascript事件冒泡,事件捕获和事件委托详解.docx

    javascript事件冒泡,事件捕获和事件委托详解  1、事件冒泡:在javascript事件传播... js事件捕获一般通过DOM2事件模型addEventListener来实现的: target.addEventListener(type, listener, useCapture) 第三个参

    DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)

    DOM事件标准定义了两种事件流,这两种事件流有着显著的不同并且可能对你的...和许多Web技术一样,在它们成为标准之前,Netscape和微软各自不同地实现了它们,下面介绍DOM事件阶段以及事件捕获与事件冒泡先后执行顺序

    JS中绑定事件顺序(事件冒泡与事件捕获区别)

    本文主要介绍了JS中绑定事件顺序(事件冒泡与事件捕获区别)。具有很好的参考价值,下面跟着小编一起来看下吧

    js之事件冒泡,事件捕获,事件委托

    当事件到达目标节点之后,会沿着捕获阶段的路线原路返回,同样所有经过节点会被触发。即是自内而外,从叶到根,从小到大。 说起来很复杂,其实用一个示列就很容易理解 div{ margin: 50px; overflow: ...

    事件冒泡及捕获

    事件冒泡及捕获的文档及示例代码,例子写得比较简单,请结合文档来看。

    js事件机制----捕获与冒泡机制实例分析

    主要介绍了js事件机制----捕获与冒泡机制,结合实例形式分析了js事件机制中捕获与冒泡机制相关原理、操作技巧与注意事项,需要的朋友可以参考下

    JavaScript事件冒泡机制原理实例解析

    DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段,事件冒泡顺序是由内到外进行事件传播,事件冒泡是由IE开发团队提出来的,即事件开始时由最具体的元素(文档中嵌套层次最深的那个...

    深入理解JS DOM事件机制

    “DOM2级事件流”规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段和冒泡阶段。首先发生的是事件捕获,为截获事件提供了机会。然后是实际的目标接收到事件。最后一个阶段是冒泡阶段,可以在这个阶段对事件作出...

Global site tag (gtag.js) - Google Analytics