Flex 自定义事件
一.分派自定义事件类型
任何实现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 自定义事件的更多相关文章
- FLEX自定义事件
有时候我们需要让两个组件之间实现联动,并且在其中传递数据,自定义事件机制可以帮助我们比较优雅的实现这种需要. 下面的例子,是打算实现一个列表和一个编辑框的联动. 编辑框代码 <?xml vers ...
- Flex事件机制学习-自定义事件实现类间通信 .
今天,学习Flex自定义事件,可以使两个类通信,定义一个Main类. public class Main extends Sprite { public function ...
- 【教程】【FLEX】#003 自定义事件、模块间通讯
本篇笔记,主要阐明 事件是如何创建 和 如何使用自定义事件达到模块之间通讯 的效果. 句子解释: 什么叫做模块之间的通讯呢?? 简单点说,就是两个模块之间可以互相传数据. A模块 可以接收到 B模块的 ...
- Flex之自定义事件
1.通过dispatchEvent委托事件模式完成自定义事件: <?xml version="1.0" encoding="utf-8"?> < ...
- flex中dispatchEvent的用法(自定义事件) .
Evevt和EventDispatcher类在as3的事件机制中是很重要的角色,dispatchEvent()是EventDispatcher类的一个事件发送方法,它可以发送出Event类或其子类的实 ...
- [置顶] flex4事件监听与自定义事件分发(三)
1.我们来说一下自定义事件子类.什么时候创建新的事件类以及怎么创建. (1)说一下,我们什么时候需要自定义事件类.举例说明,在flex中事件的基类是Event,而当我们点击某个按钮或者是单击某个组件的 ...
- Flex自定义组件开发之日周月日期选择日历控件
原文:Flex自定义组件开发之日周月日期选择日历控件 使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的 ...
- ExtJS自定义事件
1.开发ExtJS组件UI的时候,基本上对于一些操作,就是与后台交互之类的多数都是用户进行点击触发一个事件,在事件的处理器handler里面调具体的业务方法,完成业务数据的处理以及业务流程的流转机制, ...
- flex 自定义组件的编写
使用flex也很久了,也改过别人写的flex自定义组件,但是就是没有系统的研究下flex组件的编写步骤,和要注意的东西,在这里我参照一本书中的例子,好好的理解下,也为了巩固下自己对flex的理解! 1 ...
随机推荐
- Linux分区方案
创建三个分区 1./boot 启动分区 存放内核和启动程序 空间分配:100M 类型:ext4 2./swap 交换分区 虚 ...
- 大写String和小写string的区别
1.string是c#中的类,String是.net Framework的类(在c# IDE中不会显示蓝色) ; 2.c# string映射为.net Framework的String ; 3.如果用 ...
- webpack和webpack-dev-server的区别
第一: webpack只是构建 webpack-dev-server除了构建,还提供web服务 第二:webpack.config.json的路径参数 显然,entry都一样,因为都要知道需要构建 ...
- 堆分配与栈分配---SAP C++电面(5)/FEI
一直以来总是对这个问题的认识比较朦胧,我相信很多朋友也是这样的,总是听到内存一会在栈上分配,一会又在堆上分配,那么它们之间到底是怎么的区别呢?为了说明这个问题,我们先来看一下内存内部的组织情况. 从上 ...
- fork进程函数总结
学习链接: http://blog.csdn.net/jason314/article/details/5640969 http://coolshell.cn/articles/7965.html 搜 ...
- APM代码学习笔记1
libraries目录 传感器 AP_InertialSensor 惯性导航传感器 就是陀螺仪加速计 AP_Baro 气压计 居然支持BMP085 在我印象中APM一直用高端的MS5611 AP_Co ...
- 由Mifare 1卡破解带来的危险以及应对方法
今年年初以来,一个消息的传出震惊了整个IC卡行业.最近,德国和美国的研究人员成功地破解了NXP的Mifare1芯片的安全算法.Mifare1芯片主要用于门禁系统访问控制卡,以及一些小额支付卡,应用范围 ...
- xsoup,Jsoup
Xsoup 0.2.0 Xsoup 的详细介绍:请点这里 Xsoup 的下载地址:请点这里 https://github.com/code4craft/xsoup http://www.oschina ...
- UVA - 10129Play on Words(欧拉路)
UVA - 10129Play on Words Some of the secret doors contain a very interesting word puzzle. The team o ...
- HttpUrlConnection get和post简单实现(疑惑解决)
近期研究微信的公众平台开发.须要和微信的server进行数据读取,简单研究了下jdk自带的HttpUrlConnection类(URLConnection的子类),简单实现了一下微信的access_t ...