`
lorry1113
  • 浏览: 264259 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)Flex3事件探寻

 
阅读更多


在flex中,Event是一个比较神奇,而且是我们必须经常打交道的一个类,黑羽大哥的一句话很经典:平生不识Event,就称闪客也枉然,说明了Event在Flash和Flex中的地位。
         那么这个非常重要的东西,该如何去应用呢?在这之前,我们要清楚一个事情,那就是Event是Object这个伟大父亲的220多个孩子之一,也就是说,它是直接继承于Object的。可是我们知道这有什么用处呢,嘿~,用处大啦,因为这代表了Event的贵族气质,即:在Event中,级别高的控件触发的事件,在级别低的控件中是无法被监听到的,怎么样,够高傲了吧。

         在flex中,事件分成了两类,一个是系统事件,一个自定义事件。系统事件是包含鼠标点击,焦点获得等等。自定义,顾名思义,是自己定义的事件啦,但是要注意,自定义的事件必须要继承于Event这个类,否则,listener是不会搭理你滴~。那么自定义事件该如何定义呢,下面有一个例子,会对你有帮助。
import flash.events.Event;
 
public class MyEvent extends Event
 { 
public function MyEvent (type:String, nextPage:String, bubbles:Boolean = false, cancelable:Boolean = false) {
 super(type, bubbles, cancelable);
 } 
}


         有了自定义事件,那么我们的下一个问题就来啦,自定义事件有了,那么该如何触发,又如何监听呢,别着急啦~~,下面就说。
         在flex中,我们自定义触发事件用的是dispatchEvent(Event),里面存放的就是我们上面提到的自定义Event事件~。系统定义的触发事件,例如:
<mx:Button id="testMs" x="71" y="295" label="Button" click = “”/>
鼠标点击的事件等等。
那么监听的方法呢,监听是这样来定义的。
function addEventListener(eventName:String, //事件的KEY
 listener:Function, //事件的方法
 useCapture:Boolean=false, //确定侦听器是运行于捕获阶段、目标阶段还是上浮阶段。
 priority:Integer=0, //优先级
 useWeakReference:Boolean=false // 是否设定为弱引用
 ):
  、

     
怕了吧,是不是参数很多,和我们平时用的有点不太一样,我们平时,一般都是这样用的

testMs.addEventListener(MouseEvent.CLICK,changeVboxLabel);,
         后面多出的参数是什么意思呢?要想清楚知道这些,我们必须要先说明一下flex中事件处理的流程。
         在Flex中,触发事件后,流程分为三部分,例如,我们有下面这个

<mx:Panel>
     <mx:HBox>
         <mx:VBox>
                 <mx:Button />
         </mx:VBox>
     </mx:HBox>
 </mx:Panel>
 

        假设,在<mx:VBox>中触发一个事件。事件的触发顺序是这样的,先捕捉,然后目标,最后上浮。
         捕捉:在我们刚才的假设中,首先触发器会按<mx:Panel>-><mx:HBox>-><mx:VBox>这个顺序来检查每个节点.这个阶段,我们称为捕捉阶段,在addEventListener的构造函数中,我们默认是不监听这个阶段的。
         目标:顾名思义,就是<mx:VBox>这个触发事件的节点。
         上浮:<mx:VBox>-><mx:HBox>-><mx:Panel>是按照这个顺来检查每个节点是否注册了监听。
         了解了Flex中事件的处理流程,那么我们可以解释addEventListener三个参数的意义啦。
         useCapture:Boolean=false,表示的,这个监听是能在目标阶段和上浮阶段进行监听
         useCapture:Boolean=true,表示的是这个监听只能在捕捉阶段进行监听。
         priority:Integer=0, 优先级,监听是有优先级的,那么通过这个字段,我们可以轻松的改变监听的优先级,是不是很方便,默认的时候为0;
         useWeakReference:Boolean=false // 是否设定为弱引用 这个参数的意思是,在该监听不使用的时候,是否允许垃圾回收器,将该监听回收。这个很重要,因为addEventListener有点类似千年老龟,生命周期比较长,如果没有被回收掉,会一直占着系统资源的。
         最后有一点,要非常注意,在UI的监听执行完毕后,一定要将该监听移除removeEventListener,否则,即使UI被移除掉,监听也不会被销毁。这个比较重要,因为一些看起来比较诡异的错误,大部分是因为这个导致的。
         现在来解惑先前的埋伏下的悬念:
MyEvent (type:String, bubbles:Boolean = false, cancelable:Boolean = false)

bubbles:Boolean = false:这个事件是否参与上浮阶段

cancelable:Boolean = false // 确定是否可以取消 Event 对象
所以,在application中,触发的事件,它的底层,是无法监听到的
分享到:
评论

相关推荐

    flex事件flex事件flex事件flex事件

    3. **JavaScript事件**: - **DOM事件**:如`click`, `mouseover`, `mouseout`, `keydown`等,这些通用事件可以在任何元素上触发,包括Flex容器和项目。 - **自定义事件**:开发者可以通过`CustomEvent` API创建与...

    Flex事件机制详细说明

    在Flex中,事件模型基于DOM3事件模型。这意味着事件的传播遵循了一套固定的规则,包括事件的捕获、目标和上浮三个阶段。这些规则使得事件能够有效地被不同层级的对象监听和处理。 #### 二、事件流简介 事件流是指...

    flex事件运行流程

    3. Application派发`preinitialize`事件。 4. 调用`createChild()`,创建所有应用组件,所有组件的`createChild()`方法被执行。 5. Application派发`initialize`事件,表示组件初始化结束。 6. 派发`...

    Flex3中文版API

    5. **事件处理**:Flex3使用事件驱动架构,事件处理是其重要组成部分。事件可以是用户交互触发的,也可以是程序内部状态变化引起的。 6. **服务和数据访问**:Flex3支持与服务器端的数据交换,通过AMF(Action ...

    flex的事件详解

    DOM3事件模型包括以下几个核心概念: 1. **事件派发器(Event Dispatcher)**:负责生成并发送事件的对象。在买鞋的例子中,顾客可以被视为事件派发器。 2. **事件类型(Type)**:事件的具体类别,如点击、键入等。买...

    flex4自定义事件用法

    3. **派发自定义事件** - 在需要触发事件的地方,使用`dispatchEvent()`方法派发自定义事件。确保事件对象已经被正确实例化并设置了必要的属性,如事件类型、目标等。 4. **注册事件监听器** - 要响应自定义事件...

    flex3-cn-api..zip_flex_flex 3 api_flex3 api_flex3 a_flex3 api

    文档名为“Flex3拞暥API..chm”,其中的“拞暥”可能是由于编码转换问题导致的错误显示,实际上应该是“API”的正确拼音表示。 Flex 3 API文档详细阐述了Flex框架的各种类、方法、属性和事件,涵盖了以下关键知识点...

    flex3 json官方包

    Flex3 JSON官方包是Adobe Flex 3开发过程中用于处理JSON(JavaScript Object Notation)数据的组件集合。JSON是一种轻量级的数据交换格式,因其简洁、高效而被广泛应用于Web服务和客户端之间的数据通信。在Flex3中,...

    flex3使用说明

    Flex3 使用说明 Flex3 是一个高效、免费的开源框架,用于构建具有表现力的 Web 应用程序。Flex3 可以与 Java 后台进行通信,并与 FusionCharts 结合使用,实现数据可视化。下面是 Flex3 的详细介绍: 一、Flex ...

    flex3帮助文档

    1. **事件模型**:Flex3采用事件驱动的编程模型,事件监听器可以方便地处理用户交互和其他系统事件。 五、图形和动画 1. **Spark和MX组件**:Flex3有两种组件集,MX组件是早期的,而Spark组件在Flex4引入,提供更...

    Flex3中文PDF教程

    它不仅讲解了Flex3的基本组件、布局管理器和事件处理,还特别强调了游戏开发和安卓应用开发这两个特定领域。 一、Flex3基础 1. **环境搭建**:首先,你需要安装Adobe Flex Builder或使用免费的FlashDevelop作为...

    Flex3与Flex4对比

    ### Flex3与Flex4对比分析 #### 一、概述 随着技术的发展,Adobe Flex平台也在不断进化以满足日益增长的应用需求。本文旨在详细介绍Flex3与Flex4之间的主要区别,特别是Flex4相较于Flex3的新功能与改进之处。通过...

    Flex4.5事件机制

    事件是ActionScript 3.0中的核心概念,它们在DOM3事件模型的基础上进行扩展。事件的发生通常涉及到事件的发起、传递和处理。在Flex中,用户的行为,如点击按钮或输入文本,会触发相应的事件,这些事件包含关于事件的...

    flex控件事件

    3. 事件对象: 当事件发生时,会创建一个事件对象,它包含了关于事件的所有信息,如事件类型、时间源、事件目标等。开发者可以通过事件对象访问这些信息。 4. 事件监听器: 为了响应事件,我们需要添加事件监听器...

    Flex3开发指南 flex3基础教程

    Flex3开发指南 flex3基础教程

    用Flex写的照片旋转

    Flex提供了一系列内置组件,如Image控件,可以方便地用于显示图像,同时,通过自定义动作和事件处理,可以实现照片的旋转功能。用户可以通过拖动或者点击按钮来改变照片的角度,体验流畅的旋转效果。 在标签中,...

    flex3事件机制的讲座

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

    Flex 3开发指南

    - **UI 组件**:Flex 3提供了一系列丰富的UI组件,如按钮、文本框、列表、树形控件等,这些组件可以方便地拖放到界面上,并通过属性设置和事件处理来定制外观和行为。 #### 四、Flex 3 高级功能 - **数据绑定**:...

    Flex3与flex4的区别

    标题和描述都聚焦于对比Flex3与Flex4之间的差异,这是一种Adobe系统提供的开源框架,用于构建跨平台的桌面和移动应用程序。Flex4,其代号为Gumbo,是在Flex3的基础上进行了重大升级,旨在改进用户体验和开发效率。...

    Flex3学习指南-是初学者学习Flex必备资料1

    Flex3学习指南是一份专为初学者设计的资源,旨在帮助他们掌握Adobe Flex 3这一强大的富互联网应用程序(RIA)开发框架。Flex 3在Web应用开发领域具有广泛的影响力,尤其在创建交互式、图形丰富的用户界面方面表现...

Global site tag (gtag.js) - Google Analytics