本文和大家重点讨论一下Flex事件分发的概念,在分发事件时,将会分发一个事件对象出去。不管是那个事件类,都是继承自flash.events.Event对象的,他包含一些比较重要的属性,type和bubbles。
Flex事件分发
最终继承自EventDispatcher的对象都会含有dispatchEvent这个方法,他有一个参数,事件对象。之前说到的事件注册通道,他只是一个通道,实际上事件是由这个方法来分发出去的,通道只是一个管道而已。
他的作用就是分发一个事件对象,他的分发是没有目的的,一种广播形式的,Flex的事件监听线程会接收到各种各样的事件(我们称之为捕获事件,这在后面会介绍到),那么哪种才是你要的事件,标识就通过事件的type属性来区分。
自定义Flex事件分发
这部分就不长篇大论了,因为各位应该已经掌握了事件的原理,因此贴出演示源码,并进行些简单的解释。
1.自定义Flex事件components/MyEventTest.as
- packagecomponents
- {
- importmx.events.FlexEvent;
- publicclassMyEventTestextendsFlexEvent
- {
-
publicstaticconstONCHANGE:String="onChange";
- publicvareventInfo:String;//自定义的事件信息
- publicfunctionMyEventTest(s:String){
- super(s);//如果在构造时不设bubbles,默认是false,也就是不能传递的。
-
eventInfo="这个事件是:"+s;
- }
- }
- }
-
2.自定义组件components/ComponentForEvent.as
- packagecomponents
- {
- importflash.events.EventDispatcher;
- //这个就是声明事件注册通道的方法了。name是事件对应的名称,也就是之前提到的type。Type是该事件的类
-
[Event(name="onChange",type="components.MyEventTest")]
- publicclassComponentForEventextendsEventDispatcher
- {
- privatevarname:String;
- publicfunctionchangeName(newName:String){
-
this.name=newName;
- dispatchEvent(newMyEventTest(MyEventTest.ONCHANGE));
- }
- }
- }
-
3.自定义Flex事件分发中App.mxml代码
- <?xmlversionxmlversion="1.0"encoding="utf-8"?>
-
<mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"
-
layout="absolute"xmlns:comp
-
>
-
<mx:Script>
-
<![CDATA[
- importmx.controls.Alert;
- privatefunctionchangeName(){
- cfe.changeName("新名称");
- }
- ]]>
-
</mx:Script>
-
<mx:Buttonidmx:Buttonid="testBtn"click="changeName()"label="测试"/>
-
<components:ComponentForEvent
-
id="cfe"/>
-
</mx:Application>
分享到:
相关推荐
AppEvent类还提供了一种静态的dispatch方法,方便直接创建并分发事件实例。 EventBus类是事件总线模式的实现,它负责接收事件并将其分发给所有注册的监听者。EventBus类中定义了两个主要的方法:addListener和...
在示例中,`CustomEvent`类使用静态的`EventDispatcher`实例`dispatcher`来分发事件。 - `addEventListener()`:用于注册事件监听器,指定事件发生时要执行的处理函数。 - `dispatchEvent()`:用于触发事件,将...
- **分发事件**: 组件通过`dispatchEvent`方法分发事件。例如:`myButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));` - **事件对象**: 每个事件都由一个事件对象表示,该对象封装了事件的相关信息,如事件...
此方法返回一个布尔值,通常为`true`,表示事件已成功分发。 为了向`Event`对象添加新的属性,开发者可以继承`Event`类并定义所需的属性。这种方法适用于需要携带额外信息的事件场景。 #### 四、事件的传播 事件...
**事件对象**:在分发事件时,会创建并发送一个事件对象。所有事件类都继承自 `Event` 类,这个基类包含了 `name` 和 `bubbles` 属性。`name` 属性用来标识事件的类型,而 `bubbles` 属性则决定了事件是否能够向上...
Flex事件机制是Adobe Flex应用程序中处理用户交互和组件通信的核心组成部分。它主要涉及事件流、事件处理程序以及事件对象的概念,这些在构建富互联网应用程序(RIA)时扮演着至关重要的角色。下面将对这些概念进行...
【Flex 事件机制详解】 Flex 事件机制是 Flex 应用程序中不可或缺的一部分,它使得组件之间能够有效地通信,响应...通过深入了解事件注册、分发、监听以及自定义事件,开发者可以更高效地控制 Flex 应用程序的行为。
3. **事件触发**:事件触发时,实际是调用了`dispatchEvent`方法,将事件对象分发出去。事件对象通常包含了事件的名称(`name`)、是否冒泡(`bubbles`)等信息。例如,`MouseEvent`的`bubbles`属性为`false`时,...
在分发事件时,会分发一个事件对象。无论是什么类型的事件类,它们都是继承自`flash.events.Event`的。事件对象包含了一些重要的属性,如`name`和`bubbles`。 - `name`属性用于标识事件类型。 - `bubbles`属性是一...
下面是一个简单的示例,演示如何在Flex应用中创建并分发`MyEvent`事件: ```xml ()"> [Event(name="MY_CLICK", type="ascode.MyEvent")] <![CDATA[ import ascode.MyEvent; public function init():...
本文将深入探讨Flex事件的基础知识、事件模型、事件生命周期、事件监听器,以及如何自定义事件,旨在帮助初学者理解和熟练运用Flex的事件处理。 一、Flex事件基础 1. 事件模型:Flex采用的是基于发布/订阅...
Flex事件机制是Adobe Flex应用程序开发中的关键组成部分,它允许组件之间进行有效的通信和状态管理。在Flex中,事件是用于传递信息的结构化对象,它们从一个源头(通常是组件)发送到其他感兴趣的接收者(监听器)。...
事件模型支持事件监听和分发,使得组件之间可以通信和响应特定的行为。常见的事件有点击事件、数据改变事件等。 5. **Flex的组件概述**:Flex提供了一个强大的组件库,包括按钮、文本输入框、列表、面板等,这些预...
7. **许可文件**:如`COPYING`,包含Flex的GPL许可证,详细说明了软件的使用、修改和分发条款。 编译Flex的步骤通常如下: 1. 解压文件:`tar -zxvf flex-2.6.4.tar.gz` 2. 进入解压后的目录:`cd flex-2.6.4` 3. ...
这个“Flex4视频教程_02-01事件概述”涵盖了关于Flex4中的事件处理系统的基础知识,这对于理解Flex应用程序中的交互逻辑至关重要。下面我们将深入探讨Flex4中的事件模型及其相关概念。 在Flex4中,事件是表示应用...
10. **事件系统**:Flex 4.0的事件系统支持事件冒泡、事件捕捉和事件分发,开发者可以通过监听和处理事件来响应用户交互或系统变化。 通过阅读“Flex4.0中文API.chm”文档,开发者可以详细了解这些知识点,并学习...
2. **事件监听和分发**:使用EventDispatcher进行事件监听和分发,例如,当用户点击按钮时,会触发一个事件,命令类接收到该事件后进行处理。 3. **模型的创建和管理**:案例可能会展示如何创建和使用ModelLocator来...
9. **事件调度**:AS3的事件调度器负责将事件分发到正确的事件目标,确保事件处理的正确顺序。 通过深入学习和理解这些知识点,开发者能够有效地编写出响应用户操作、与其他组件通信并能优雅地处理错误的Flex应用...
8. **事件模型**:描述Flex事件模型的工作原理,以及如何处理和分发事件。 9. **样式和皮肤**:讨论如何通过CSS来定制组件的外观,以及创建和应用皮肤。 10. **调试和测试**:提供关于如何使用Flex Builder或其他...
9. **发布与部署**:说明如何将Flex应用打包成AIR应用程序,以及如何在iOS和Android等平台上发布和分发。 10. **最佳实践和资源**:提供一些开发Flex移动应用的最佳实践,推荐相关的学习资源和社区支持。 虽然没有...