当一个事件触发会有三个阶段让程序捕获:
第一阶段:事件的捕获阶段
下一个:目标捕获阶段
最终:冒泡捕获
1)事件捕获阶段
捕获顺序是自祖先组件到事件触发组件层层执行的。比如下面一个层次关系的执行顺序为:先检查Application是否有监听器,再是Pannel最后是TitleWindow。
Application Panel TitleWindow Button(bt1) 捕获这个阶段的事件是需要设置addEventListener的第三个参数为true的,也就是addEventListener(event-name,eventHandler,useCapture=true); 关于本阶段监听器的参数Event对象有两个属性的变化值得注意。一个是target,它一直引用着触发事件的对象。currentTarget始终引用的是当前处理事件的节点的对象。例如:在每个对象上全部加上监听监听: bt1.addEventListener(Mouse_Event.MOUSE_DOWN,'eventHandler',true);其他省略。。。public funtion eventHandler(e:Event):void { mx.controls.Alert.show(e.currentTarget.id); mx.controls.Alert.show(e.target.id);}看可以看出target以及currentTarget的变化情况。第三个阶段也是如此测试。目标捕获阶段 这个阶段只执行事件触发对象的listener,target和currentTarget指向同一个对象--事件触发者。冒泡阶段 没什么好说的,只不过要想捕获这个阶段的事件必须把setEventListener的useCapture值得设为false,这点跟第一个阶段相反,而且他们的捕获顺序也相反,在这个阶段,事件的触发顺序是从事件触发者开始,逐层向上传递。target和currentTaget变化情况同第一阶段。差点忘了,在事件的任何阶段,你都可以调用
stopPropagation()
stopImmediatePropagation()
来停止事件的继续传递,但他们产生的效果是不一样的。
stopPropagation(),事件传递给下一个对象,并继续执行当前节点的其他事件捕获。
stopImmediatePropagation(),事件传递给下一个对象,但同时停止执行当前节点的其他事件捕获。
复制个例子:
<?xml version="1.0"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init(event)"> <mx:Script><![CDATA[ import mx.controls.Alert; import flash.events.MouseEvent; import mx.events.Event; public function init(e:Event) { p1.addEventListener(MouseEvent.MOUSE_DOWN,showAlert); tw1.addEventListener(MouseEvent.MOUSE_DOWN,showAlert); tw1.addEventListener(Event.CLOSE,closeWindow); } public function showAlert(e:Event) { Alert.show("Alert!\n" + e.currentTarget + "\n" + e.eventPhase); e.stopImmediatePropagation(); } public function closeWindow(e:Event) { p1.removeChild(tw1); } ]]></mx:Script> <mx:Panel id="p1" title="Panel 1"> <mx:TitleWindow id="tw1" width="300" height="300" showCloseButton="true" title="Title Window 1"> <mx:Button label="Enter name"/> <mx:TextArea id="ta1"/> </mx:TitleWindow> </mx:Panel></mx:Application>
分享到:
相关推荐
5. **数据绑定**:Flex 3.0 引入了强大的数据绑定机制,允许UI元素与后台数据模型自动同步,减少了繁琐的事件处理和手动更新。 6. **Flex Builder**:Adobe Flex Builder是一款集成开发环境(IDE),提供了图形化的...
12. Flash Professional和Flex SDK:Adobe Flash Professional是创作工具,用于设计和制作Flash内容,而Flex SDK则是一个开源开发工具套件,用于构建基于Flex框架的AS3.0应用程序。 通过“AS3.0中文帮助文档”,...
AS3.0相比于之前的版本AS2.0,引入了更多的类库和API,支持命名空间、包结构、强类型系统以及更高级别的错误处理机制,极大地提高了开发效率和代码质量。 标题中的"Flex+as3.0源码"意味着你可能获得了一组使用Flex...
AS 3.0中文文档是针对ActionScript 3.0这一编程语言的详细参考资料,它为开发者提供了全面的中文指导,对于理解和应用ActionScript 3.0在开发Flex应用程序时非常有帮助。ActionScript是一种基于ECMAScript的脚本语言...
此外,AS3.0的错误处理机制、XML和JSON处理、网络通信(如Socket和URLLoader)以及与ActionScript 2.0的迁移策略也是手册的重点。 书中可能还会包含以下主题: 1. 类库和框架:讲解ActionScript标准类库,如Math、...
Flash AS3.0 入门知识点 本资源摘要信息涵盖了 Flash AS3.0 的基础知识点,包括 ActionScript 3.0 概述、ActionScript 3.0 的发展历史、新增特色、编程环境等内容。同时还涵盖了 ActionScript 3.0 的应用领域、...
3. **事件驱动编程**:AS3.0中的事件模型是其核心特性之一,通过事件监听和分发机制,开发者可以轻松处理用户交互和其他对象间的通信。例如,舞台上的按钮点击事件或网络数据加载完成事件等。 4. **Display List**...
- AS3.0是ActionScript的重大升级,与之前的AS2.0相比,它具有更强的类型检查、更好的性能和更现代的面向对象特性。 - AS3.0基于ECMAScript 4草案,引入了类和包的概念,使得代码组织更加规范,提高了代码复用性。...
1. **ActionScript 3.0(AS3.0)基础**:AS3.0是Flash平台的主要编程语言,相比AS2.0有显著的性能提升和更严格的类型系统。学习AS3.0的基础语法、对象模型、事件处理以及类和包的概念是深入动画编程的前提。 2. **...
2. **事件驱动模型**:AS3.0 采用事件驱动编程模型,允许程序响应用户操作、网络事件或其他程序事件。例如,`Event` 类和`EventListener` 接口用于处理各种事件,如点击按钮或加载数据。 3. **强大的类库**:...
ActionScript是一种基于ECMAScript(JavaScript的标准化版本)的脚本语言,主要应用于Adobe Flash/Flex平台,用于创建交互式富媒体内容、动画以及复杂的Web应用程序。ActionScript分为两个主要版本:ActionScript ...
1. **面向对象编程(OOP)的强化**:AS3.0 引入了更严格的类定义和继承机制,支持接口和包的概念,这使得代码组织更加规范,提高了代码重用性。 2. **类型检查**:AS3.0 引入了静态类型系统,强制变量声明时指定...
Adobe AIR是一个跨平台的运行环境,使得开发者能够使用Flash、Flex或者ActionScript 3.0(AS3.0)来构建桌面应用程序,同时享受与Web应用类似的灵活性和丰富的用户体验。 在这款音乐播放器中,核心功能是通过AS3.0...
在AS3.0中使用Away3D,开发者可以利用强大的类库和优化的代码结构来创建复杂的3D场景。 2. **Away3D 3D引擎**: Away3D引擎是ActionScript 3.0中的一个核心组件,它提供了一系列工具和类,用于构建3D模型、纹理、...
6. **Error处理**:AS3.0提供了一套完整的错误处理机制,通过try...catch语句捕获和处理运行时错误,提高了程序的健壮性。 7. **Flash Player API**:AS3.0可以访问Flash Player提供的各种API,如音频和视频播放、...
而“工具”标签则暗示了可能使用到的开发工具,比如Flash Professional或Flex Builder,这些工具支持AS 3.0的编写和调试。 【压缩包子文件的文件名称列表】:repulsion ball 这个文件很可能是教程中的核心源代码,...
3. **事件模型**:AS3.0改进了事件处理,引入了事件监听器模式,使事件处理更加灵活和模块化。如`addEventListener`和`removeEventListener`方法。 4. **显示列表**:AS3.0的显示列表是舞台上的所有可视元素的层次...
而"ActionScript 3.0 programming.zip"可能是一个压缩包,包含了关于AS3.0编程的教程、示例代码或参考资料,涵盖了类系统、包管理、事件处理、网络通信、错误处理等方面的知识。 学习并熟练掌握MXML和AS3.0,能够...
5. 更快的执行速度:与ActionScript 2.0相比,AS3.0在Flash Player中运行速度显著提升,这是因为AS3.0的代码被编译为字节码,而不是解释执行。 6. 命名空间和包:AS3.0引入了命名空间和包的概念,用于组织和管理...