一.分派自定义事件类型

任何实现flash.event.IEventDispatcher接口的对象都可以分派事件,这包括所有显示对象和一些非显示对象类。通常,对于

自定义的非显示类,可以通过扩展flash.event.EventDispatcher实现分派事件的功能。

代码:dispatcherEvent(new Event("Complete"));

这行代码执行两个操作:

* 实例化一个新事件类来处理和保存信息

* 使用dispatcherEvent()函数调用来分派“Complete”类型的事件

二.创建自定义事件

下面将创建一个简单的实例,添加事件分派到自定义的非显示组件中。程序加载一个XML文件,然后在一个List中显示出结果。

首先创建一个名为DataLoader的新as类,这个类处理数据的加载和分析工作。

package net
{
import event.ContentEvent; import flash.events.ErrorEvent;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest; import mx.collections.ArrayCollection; public class DataLoader extends EventDispatcher //扩展EventDispatcher类
{
protected var _loader:URLLoader;
public function DataLoader()
{
super();
_loader=new URLLoader();
_loader.addEventListener(Event.COMPLETE,onComplete);
_loader.addEventListener(IOErrorEvent.IO_ERROR,onError);
_loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onError);
} public function load(url:String):void
{
_loader.load(new URLRequest(url));
}
public function onComplete(event:Event):void
{
var users:ArrayCollection=new ArrayCollection();
for each(var user:XML in XML(_loader.data).user)
{
users.addItem(user.@name+"-"+user.@site);
}
var ev:ContentEvent=new ContentEvent(ContentEvent.DATA_BACK);//创建并分派自定义完成事件
ev.users=users;
dispatchEvent(ev);
}
public function onError(event:Event):void
{
var ev:ContentEvent=new ContentEvent(ContentEvent.DATA_ERROR);//创建并分派自定义错误事件
ev.error=event.text;
dispatchEvent(ev);
} }
}

  创建自定义事件

package event
{
import flash.events.Event; import mx.collections.ArrayCollection; public class ContentEvent extends Event
{
public static const DATA_BACK:String="databack";
public static const DATA_ERROR:String="dataError"; public var users:ArrayCollection;
public var error:String; public function ContentEvent(type:String,bubbles:Boolean=false,cancelable:Boolean=false)
{
super(type,bubbles,cancelable);
}
override public function clone():Event
{
var event:ContentEvent=new ContentEvent(type,bubbles,cancelable);
event.users=users;
event.error=error;
return event;
}
} }

  MXML应用程序

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600"
creationComplete="init()">
<fx:Script>
<![CDATA[
import event.ContentEvent; import flash.text.engine.ContentElement; import mx.controls.Alert; import net.DataLoader;
protected function init():void
{
var dataLoader:DataLoader=new DataLoader();
dataLoader.addEventListener(ContentEvent.DATA_BACK,onData);
dataLoader.addEventListener(ContentEvent.DATA_ERROR,onError);
dataLoader.load("content.xml");
}
protected function onData(event:ContentEvent):void
{
userList.dataProvider=event.users;
}
protected function onError(event:ContentEvent):void
{
Alert.show(event.error,"ERROR!");
}
]]>
</fx:Script>
<s:List id="userList" width="100" height="100"/>
</s:Application>

  

Flex 自定义事件的更多相关文章

  1. FLEX自定义事件

    有时候我们需要让两个组件之间实现联动,并且在其中传递数据,自定义事件机制可以帮助我们比较优雅的实现这种需要. 下面的例子,是打算实现一个列表和一个编辑框的联动. 编辑框代码 <?xml vers ...

  2. Flex事件机制学习-自定义事件实现类间通信 .

    今天,学习Flex自定义事件,可以使两个类通信,定义一个Main类. public class Main extends Sprite     {            public function ...

  3. 【教程】【FLEX】#003 自定义事件、模块间通讯

    本篇笔记,主要阐明 事件是如何创建 和 如何使用自定义事件达到模块之间通讯 的效果. 句子解释: 什么叫做模块之间的通讯呢?? 简单点说,就是两个模块之间可以互相传数据. A模块 可以接收到 B模块的 ...

  4. Flex之自定义事件

    1.通过dispatchEvent委托事件模式完成自定义事件: <?xml version="1.0" encoding="utf-8"?> < ...

  5. flex中dispatchEvent的用法(自定义事件) .

    Evevt和EventDispatcher类在as3的事件机制中是很重要的角色,dispatchEvent()是EventDispatcher类的一个事件发送方法,它可以发送出Event类或其子类的实 ...

  6. [置顶] flex4事件监听与自定义事件分发(三)

    1.我们来说一下自定义事件子类.什么时候创建新的事件类以及怎么创建. (1)说一下,我们什么时候需要自定义事件类.举例说明,在flex中事件的基类是Event,而当我们点击某个按钮或者是单击某个组件的 ...

  7. Flex自定义组件开发之日周月日期选择日历控件

    原文:Flex自定义组件开发之日周月日期选择日历控件         使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的 ...

  8. ExtJS自定义事件

    1.开发ExtJS组件UI的时候,基本上对于一些操作,就是与后台交互之类的多数都是用户进行点击触发一个事件,在事件的处理器handler里面调具体的业务方法,完成业务数据的处理以及业务流程的流转机制, ...

  9. flex 自定义组件的编写

    使用flex也很久了,也改过别人写的flex自定义组件,但是就是没有系统的研究下flex组件的编写步骤,和要注意的东西,在这里我参照一本书中的例子,好好的理解下,也为了巩固下自己对flex的理解! 1 ...

随机推荐

  1. Linux分区方案

    创建三个分区 1./boot     启动分区     存放内核和启动程序                   空间分配:100M     类型:ext4 2./swap     交换分区     虚 ...

  2. 大写String和小写string的区别

    1.string是c#中的类,String是.net Framework的类(在c# IDE中不会显示蓝色) ; 2.c# string映射为.net Framework的String ; 3.如果用 ...

  3. webpack和webpack-dev-server的区别

    第一: webpack只是构建 webpack-dev-server除了构建,还提供web服务   第二:webpack.config.json的路径参数 显然,entry都一样,因为都要知道需要构建 ...

  4. 堆分配与栈分配---SAP C++电面(5)/FEI

    一直以来总是对这个问题的认识比较朦胧,我相信很多朋友也是这样的,总是听到内存一会在栈上分配,一会又在堆上分配,那么它们之间到底是怎么的区别呢?为了说明这个问题,我们先来看一下内存内部的组织情况. 从上 ...

  5. fork进程函数总结

    学习链接: http://blog.csdn.net/jason314/article/details/5640969 http://coolshell.cn/articles/7965.html 搜 ...

  6. APM代码学习笔记1

    libraries目录 传感器 AP_InertialSensor 惯性导航传感器 就是陀螺仪加速计 AP_Baro 气压计 居然支持BMP085 在我印象中APM一直用高端的MS5611 AP_Co ...

  7. 由Mifare 1卡破解带来的危险以及应对方法

    今年年初以来,一个消息的传出震惊了整个IC卡行业.最近,德国和美国的研究人员成功地破解了NXP的Mifare1芯片的安全算法.Mifare1芯片主要用于门禁系统访问控制卡,以及一些小额支付卡,应用范围 ...

  8. xsoup,Jsoup

    Xsoup 0.2.0 Xsoup 的详细介绍:请点这里 Xsoup 的下载地址:请点这里 https://github.com/code4craft/xsoup http://www.oschina ...

  9. UVA - 10129Play on Words(欧拉路)

    UVA - 10129Play on Words Some of the secret doors contain a very interesting word puzzle. The team o ...

  10. HttpUrlConnection get和post简单实现(疑惑解决)

    近期研究微信的公众平台开发.须要和微信的server进行数据读取,简单研究了下jdk自带的HttpUrlConnection类(URLConnection的子类),简单实现了一下微信的access_t ...