原问题:事件机制有三个步骤,捕获,目标和冒泡。请问,在目标阶段都已经执行了需要执行的函数,为什么还要冒泡呢?
回答:
以前以
经说过很多次了,如果在as2中,事件模式是实时拦截的,意思简述就是一个影片剪辑包裹一个按钮的时候,对按钮和影片剪辑同时侦听处理的话,影片剪辑事件
会优先于按钮被截获执行,而令到内层的按钮代码失效,所以在as2中会用到很多非as资深程序员头痛的小技巧!!! 手机发表 分段发吧
所以在as3中对事件架构做了一个很大的调整,基本上完全放弃as2的事件处理方式,所有显示对象均继承自displayObjectO类,而此类又继承自EventDispatcher,意味着所有的显示对象均天生拥有了事件派发的能力
说了这么多,其实as3中的 特色 事件流机制 是 与 显示列表 相辅相承的,对以上两点有良好的理解是 合理运用事件流机制的前提
测试过了一下,证实整个显示列表是严格按照容器的方式进行事件流的

回到第一点,as2是实时拦截的,而as3就是走了三个阶段,捕获,目标,冒泡
具体 意义其实就是为了令整个事件流过程中的各环节都能对事件进行消费
比如 一个鼠标事件发生在 一个 MC包裹一个按钮 按钮里有文字的情况下
首先肯定是捕获MC的了,然后向内层走捕获到 按钮,因为按钮simpleButton是属于非容器对象,看上面类图,所以事件流目标节点就是它了,这时是目标阶段(到达最底一层目标),然后再到冒泡阶段,沿着捕获阶段记录的节点一级一级向上访问
这时你可能要问了,为什么不直接捕获阶段一走向下走就OK呢, 这是因为盒子模式,事件应该是由最内层的盒子派发出来的,但要进入到内层盒子,就肯定要先一层层经过包裹层的遍历,才能到达目标,然后才在冒泡阶段中,令到各节点进行事件的消费
为什么要各事件进行消费啊?
这里举个例子,比如你做一个 TitleWindow ,对话框影片剪辑,按以前的做法肯定就是 在关闭按钮上写
parent.visible = false;
但站在面向对象编程的角度来说,这个应该在对话框的绑定类文中侦听 MouseEvent.CLICK事件,
然后关闭按钮根本就不用添加任何代码,因为事件存在冒泡,当按钮被点击的时候,冒泡事件过程中,因为上层包裹(对话框)对此事件侦听了,所以会响应
冒泡事件的基本作用其中一个就是这种,令到沿途各节点自身处理自己的业务,反正事件流就是
负责通知
对对应事件进行侦听的节点
通知它 所侦听的事件发生了,让它做对应的操作处理罢了
意味着所有的显示对象均天生拥有了事件派发的能力
这句是说,所有显示对象都会默认响应触发鼠标事件 键盘事件 等等等等 底层管理的交互行为事件,不用用户手动派发事件
分享到:
相关推荐
在AS3中,事件流主要分为三个阶段:捕获阶段(CAPTURING PHASE)、目标阶段(AT TARGET PHASE)和冒泡阶段(BUBBLING PHASE)。当一个事件被触发时,它首先经历捕获阶段,然后到达目标对象阶段,最后在目标对象的父级之间...
事件流包括捕获阶段、目标阶段和冒泡阶段。 #### 五、高级特性 随着对ActionScript 3.0的理解逐渐加深,学习者可以探索更多高级特性和技巧。这些特性可以帮助开发者更好地组织代码、提高效率并创建更复杂的项目。 ...
- **事件传递与捕获阶段**:理解事件的传递过程,包括目标阶段、捕获阶段和冒泡阶段,这对于精确控制事件响应非常关键。 #### 五、图形与动画 - **矢量图形**:利用AS3中的图形API绘制复杂的矢量图形,如线条、圆形...
1. **事件冒泡与捕获**:事件在AS3中有两种传播模式,冒泡和捕获。冒泡是从最具体的节点(通常是舞台上的对象)向上逐级传播到不那么具体的节点(如容器),而捕获则相反,从舞台向对象节点传播。你可以通过设置`...
事件模型包括冒泡、捕获和目标三个阶段,使事件处理更为灵活。 在AS3中,DisplayObject容器和显示列表是构建图形用户界面的关键。开发者可以使用Sprite和MovieClip类创建自定义的可视元素,并通过添加、删除和组织...
Flex 3 的事件机制涉及事件流的概念,包括三个阶段: 1. 捕获阶段(Capture Phase):事件从最顶层的根节点开始,逐层向下传播到目标节点,如果沿途的节点注册了捕获事件监听器,相应的监听器会被调用。 2. 目标阶段...
教程详细阐述了如何添加事件监听器、触发事件以及处理事件流,包括捕获阶段、目标阶段和冒泡阶段。 第十一部分涉及视觉元件,如MovieClips和Sprites。这些是DisplayObject类的实例,它们可以接收事件、包含子元件并...
8. **性能优化**:AS3中的位图缓存、事件冒泡和捕获、垃圾回收机制等都是提高动画性能的关键知识点。了解并合理使用这些机制,可以避免内存泄漏和性能瓶颈。 总的来说,尽管AS3已经不是当前的主流技术,但它的核心...
- **事件流**:事件发生的过程,包括捕获阶段、目标阶段、冒泡阶段。 - **事件监听器**:通过添加监听器来响应特定事件。 - **事件对象**:携带有关事件信息的对象,可以通过它获取事件的细节。 #### 四、...
6. 事件的执行过程包括:捕获阶段(Capture Phase)、目标阶段(Target Phase)和冒泡阶段(Bubble Phase)。 7. 函数中返回值的语句是`return`;导入外部类或库的语句是`import`。 8. 关联数组中使用字符作为索引的...
- 介绍事件流的概念,包括捕获阶段、目标阶段和冒泡阶段。 #### 七、使用XML和XMLList类处理XML数据 随着Web服务的发展,XML成为了一种重要的数据交换格式。这部分将介绍如何在ActionScript 3.0中解析和操作XML...
- **事件流**:详细解释了事件的传播过程,包括捕获阶段和冒泡阶段。 - **事件对象**:`Event` 类及其子类包含了事件的具体信息。 - **事件侦听器**:通过 `addEventListener()` 和 `removeEventListener()` 方法...
此外,还可以传入第三个可选参数 `useCapture`(布尔值),用于指定是否在捕获阶段处理事件,默认为 `false` 表示在冒泡阶段处理。第四个可选参数 `priority`(整数)用于指定事件监听器的优先级,数值越大优先级越...