在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中,事件模型基于DOM3事件模型。这意味着事件的传播遵循了一套固定的规则,包括事件的捕获、目标和上浮三个阶段。这些规则使得事件能够有效地被不同层级的对象监听和处理。 #### 二、事件流简介 事件流是指...
"flex事件"这个概念可能指的是与Flex布局相关的JavaScript事件或者是在Flex容器中发生的交互事件。然而,由于提供的信息较少,无法明确具体是指哪些特定的事件。下面,我将详细介绍Flex布局的基础知识以及可能与之...
在Flex开发中,事件流程是理解应用程序生命周期的关键。本文将深入探讨Flex事件运行流程,特别是与`mx:Application.applicationComplete`、`creationComplete`以及Flex应用程序初始化顺序相关的知识点。 首先,Flex...
flex中文帮助flex中文帮助flex中文帮助flex中文帮助
自定义事件是Flex开发中的一个重要概念,允许开发者扩展内置事件系统,以满足特定项目的需要。下面将详细介绍Flex4自定义事件的用法,以及如何在一个完整的项目中导入和运行。 1. **创建自定义事件类** - 首先,...
在Flex中,控件(或称为组件)是构建用户界面的基本元素,如按钮、文本框、列表等。当用户与这些控件进行交互时,如点击按钮、输入文本或选择列表项,就会触发相应的事件。理解并熟练运用Flex控件事件,可以极大地...
Flex是Adobe公司开发的一种用于构建富互联网应用程序(RIA)的框架,主要基于...通过理解和实践这个“flex 关于事件的例子”,初学者能够掌握Flex中事件处理的基本原理和用法,为构建交互式Flex应用打下坚实基础。
事件流是Flex事件处理的关键组成部分,它描述了事件对象如何在显示列表中传播。事件流分为三个阶段: 1. **捕获阶段**:事件从最顶层容器开始向下传播,直到达到目标对象。这一阶段主要用于提前捕获事件,以便在...
在Flex中,用户的行为,如点击按钮或输入文本,会触发相应的事件,这些事件包含关于事件的信息,并通知相关对象进行处理。 DOM3事件机制包括四个主要部分:注册事件侦听器、发送事件、侦听事件和移除事件侦听器。以...
Flex采用事件驱动的编程模型,用户交互、数据变化或其他系统事件都会触发相应的事件,开发者可以通过监听和处理这些事件来控制应用的行为。 七、Flex构建流程 1. 创建项目:在Flex Builder或Adobe Animate CC中创建...
在Flex中,ActionScript用于编写业务逻辑和处理用户交互。 4. **Flex组件** Flex提供了大量预定义的UI组件,如按钮、标签、列表、面板等,开发者可以通过这些组件快速搭建用户界面。每个组件都有丰富的属性和方法...
Flex事件机制是Adobe Flex应用程序开发中的核心组成部分,它允许组件之间进行有效的通信和交互。对于初级Flex程序员或爱好者来说,理解这一机制至关重要。在本文中,我们将深入探讨Flex事件的各个方面,包括事件流、...
// 调用Flex中的windowCloseHandler方法 return 'Are you sure to close this page?'; } } ``` 这里的`TestFlash`是嵌入到HTML中的Flex SWF文件的ID。通过这种方式,当用户试图关闭页面时,会弹出一个提示框询问...
4. **数据绑定**:Flex中的数据绑定是其强大特性之一,它允许UI组件的状态与应用程序数据自动同步。这大大简化了代码,提高了开发效率。 5. **事件驱动编程**:Flex应用程序是基于事件驱动的,用户操作或其他系统...
Flex是Adobe公司开发的一种用于构建富互联网应用程序(RIA)的开放源代码框架。...通过这个教程,读者不仅可以理解Flex的基本概念,还能掌握实际开发中的技巧和最佳实践,从而成为一名熟练的Flex开发者。
Flex中的数据绑定机制允许将UI组件的属性直接绑定到应用程序的数据模型,当数据模型发生变化时,UI会自动更新,反之亦然,简化了界面和数据间的交互。 六、Flex事件模型 Flex事件模型基于观察者模式,事件是组件间...
很多新人对Flex的事件机制都不太熟悉,在使用过程中难免会出现各种问题,这是一个非常普遍的问题,为了更快更好的帮助大家,将介绍一下Flex中事件的各种机制和用法。 Flex的精髓之一就是事件和绑定机制,了解之后,...
在Flex中,事件注册通道是指可以在MXML中通过代码提示找到的事件,它们允许开发者在特定事件发生时指定要执行的函数。这些通道在代码提示中明确列出,为组件提供了高度的抽象化,使得开发人员能够清晰地知道组件支持...
5. **事件处理**:在Flex中,事件是组件之间通信的主要方式。你可以为组件添加事件监听器,响应用户的操作或者其他组件发出的事件,实现复杂的交互逻辑。 6. **Flex图形和动画**:Flex提供了强大的绘图和动画功能,...
ActionScript 3.0则是Flex中的编程语言,提供了面向对象的编程能力,使得开发者可以实现复杂的业务逻辑。 二、Flex SDK与Flex Builder Flex SDK是Flex开发的基础,包含了编译器、库和命令行工具,允许开发者在任何...