`

Flex中的事件机制(转)

    博客分类:
  • Flex
阅读更多
一. 事件简介 事件可以由外设触发, 比如:键盘,鼠标, 也可能是外部输入, 比如:web service的返回. 事件还能由组件的外观和生命周期发生变化时触发, 比如:组件的创建或者改变大小. 所有用户与应用交互都会产生事件.用户没有直接与应用交互也可能产生事件, 比如:数据装载完毕. 你可以在程序中使用事件监听器监听这些事件. 事件监听器是函数方法用于响应指定的事件. 有时也称之为事件处理器. Flex的事件模型基于DOM3事件模型. 组件产生派发事件并消费(监听)其他事件.如果一个对象想要了解其他对象事件的信息, 可以注册一个监听器. 当事件发生时,对象派发此事件到所有注册过的监听器中. 组件有Flex提供的内建事件. 也可以使用派发-监听模型定义自己的事件监听器, 并指定监听器监听何种事件. 二. 事件流简介 当一个事件被派发出来时, 事件对象从根节点开始自上而下开始扫描display list, 一直到目标对象, 检查每个节点是否有相应的监听器 . 目标对象指的是display list中产生事件的对象. 比如: <panel><hbox><vbox><button></button> </vbox></hbox></panel> 如何此时 resize了VBox, 则会从根(Application)开始, 下来检查Panel, HBox, 直到目标对象-产生resize事件的VBox为止. 三. 事件的派发 Flex中可以通过dispatchEvent()方法手工派发事件, 所有UIComponent的子类都可以调用此方法. 语法: objectInstance.dispatchEvent(new Event("event_type"):Boolean 参数event_type是Event对象的type属性. 函数的返回值总是True. 可以使用此方法派发任意事件, 而不仅仅是用户自定义事件, 比如: 可以派发一个Button的Click事件. var result:Boolean = buttonInstance.dispatchEvent(new Event(MouseEvent.CLICK)); 在Flex应用中不是必须对新派发的事件进行处理, 如果触发了一个事件, 而没有对应的Listener时,Flex忽略此事件. 如果想给Event对象添加新属性, 就必须继承Event类,然后定义新属性 四.事件的传播: 事件触发后, Flex有3个检测事件监听器的阶段, 3个阶段的发生的顺序如下: 1. 捕获 2. 目标 3. 上浮 在任意一个阶段, 节点们都有机会操作事件. 比如: 用户点击了一个在VBox中的Button, 在捕获阶段, Flex检查Application对象(根节点)和VBox是否有监听器处理此事件. Flex然后在目标阶段触发按钮的监听器. 在上浮阶段, VBox和应用以与捕获阶段相反的顺序再次获得机会处理事件. 在ActionScript3.0中,你可以在任意目标节点上注册事件监听器. 但是部分事件会被直接传给目标节点,比如Socket类. 捕获阶段的节点顺序是从父节点到子节点的, 而上浮阶段刚好相反. 捕获事件缺省是关闭的,也就是说如果要捕获事件, 必须显式指定在捕获阶段进行处理. 每一个Event都有target和currentTarget属性, 帮助跟踪事件传播的过程. 捕获阶段: 在捕获阶段,Flex在显示列表中检查事件的祖先是否注册了事件的监听器. Flex从根节点开始顺序而下. 大多数情况中, 根节点是Application对象. 同时, Flex改变事件的currentTarget值. 缺省情况下, 在此阶段,没有容器监听事件. use_capture参数的值是False,在此阶段添加监听的唯一方法是在调用add_listener时, 传入一个为True值的use_capture参数, 比如: myAccordion.addEventListener(MouseEvent.MOUSE_DOWN, customLogEvent, true); 如果是在Mxml中添加监听, Flex设置此参数为False, 没有办法进行修改. 如果设置了use_capture为True, 那么事件将不会上浮. 如果既想捕获又想上浮就必须调用 addEventListener两次. 一次use_capture参数为true, 一次为false; 捕获很少使用, 上浮的使用更为普遍. 目标阶段: 在目标阶段, Flex激发事件的监听程序, 不检查其他的节点. 上浮阶段: 事件只在bubbles属性为True时才进行上浮. 可以上浮的事件包括: change, click, doubleClick, keyDown, keyUp, mouseDown, mouseUp. 在上浮阶段, Flex改变事件的currentTarget属性, 而target属性是初始派发事件的对象. 查询事件阶段: 使用事件的eventPhase可以获得事件当前的阶段, 1: CAPTURE_PHASE 2: AT_TARGET 3: BUBBLING_PHASE 示例: private function determineState(event:MouseEvent):Void { Debug.trace(event.eventPhase + ":" + event.currentTarget.id); } 停止传播: 使用下面两个函数停止事件的传播: stopPropagation() stopImmediatePropagation()
分享到:
评论

相关推荐

    Flex事件机制详细说明

    快速掌握flex的事件机制,让你灵活运用flex的事件完成所有功能。

    flex事件机制的分发

    flex事件机制,flex事件机制的分发,flex事件机制,flex事件机制的分发,flex事件机制,flex事件机制的分发,flex事件机制,flex事件机制的分发,flex事件机制,flex事件机制的分发

    flex事件机制的demo

    Flex ActionScript3.0事件机制的Demo, 举例说明了事件的三个阶段,事件的派发,事件的侦听,事件的拦截,自定义事件等相关知识点. 以上知识点在Demo中都有体现,初学者请仔细分析代码,加强理解,多调试、修改、验证以加深...

    Flex的事件机制笔记

    Flex的事件机制笔记,是初级的笔记,对应初级的Flex程序员或爱好者有用

    Flex4.5事件机制

    Flex4.5事件机制详细描述教程,希望能给大家帮助~~

    flex3事件机制的讲座

    郑老师关于flex3事件机制的讲座,讲的很好哦!

    Flex 事件机制,flex入门学习

    Flex 事件机制,flex入门学习的好帮手

    Flex事件机制(通俗易懂)

    Flex事件机制,其实Flex的核心就是事件,了解了其中的原理,学习起Flex就不是很难了,这篇的内容对初学者有很大的帮助,我从中受益很多,看完之后,对Flex的认识进一步加深了,很好的资料。希望对大家有所帮助。

    flex事件机制分析

    简要说明了flex的事件流、事件处理等方面的知识。

    深入浅出讲解flex中的事件机制

    此往篇文档非常清淅的讲解在flex中的事件机制,告诉你target与currenttarget的区别

    Flex.3事件机制(3)——事件的应用实例视频

    Flex.3事件机制(3)——事件的应用实例视频Flex.3事件机制(3)——事件的应用实例视频

    关于flex事件的讲解

    很多新人对Flex的事件机制都不太熟悉,在使用过程中难免会出现各种问题,这是一个非常普遍的问题,为了更快更好的帮助大家,将介绍一下Flex中事件的各种机制和用法。 Flex的精髓之一就是事件和绑定机制,了解之后,...

    Flex.3事件机制(2)——Event对象视频

    Flex.3事件机制(2)——Event对象视频Flex.3事件机制(2)——Event对象视频Flex.3事件机制(2)——Event对象视频

    flex的事件详解

    介绍flex 的事件机制,理解flex的事件传输原理

    flex 事件流原理

    很多新人对Flex的事件机制都不太熟悉,在使用过程中难免会出现各种问题,这是一个非常普遍的问题,为了更快更好的帮助大家,将介绍一下Flex中事件的各种机制和用法。 Flex的精髓之一就是事件和绑定机制,了解之后,...

    flex itemRenderer 渲染机制的概念和使用

    flex itemRenderer 渲染机制的概念和使用

    flex安全机制详解

    flex 安全机制 以及代码示例全面详细解读进程之间的通讯 客户端与服务器的通讯

    flex垃圾回收机制是什么原理

    Flex 应用的对象在内存中被映射成树形结构。这很好理解,每个 Flex 应用总有一个 Application 的入口被称为根节点(Root),垃圾收集器从根节点开始遍历每个对象,对可达对象标记为“有效”(有一种例外就是弱引用,...

    Flex垃圾回收机制详解

    Adobe官方的Flex垃圾回收机制说明,理解了这个文档,将真正理解ActionScript的垃圾回收机制,编写高性能的Flex程序

    Flex:事件的流转控制.doc

    Flex:事件的流转控制,此文档详细描述了事件的流转机制

Global site tag (gtag.js) - Google Analytics