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

Flex4 创建自定义Event

 
阅读更多

 

以加载一个XML文档为例

 

首先创建一个名为DataLoader的ActionScript Class,用来处理数据加载和分析工作。

 

package net
{
	//events.ContentEvent为自定义的Event类
	import events.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;
	//添加元数据方便MXML代码提醒
	[Event(name="dataBack", type="events.ContentEvent")]
	[Event(name="dataError", type="events.ContentEvent")]
	public class DataLoader extends 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));
		}
		
		protected 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);
		}
		protected function onError(event:ErrorEvent):void
		{
			var ev:ContentEvent = new ContentEvent(ContentEvent.DATA_ERROR);
			ev.error =event.text;
			dispatchEvent(ev);
		}
	}
}

 然后创建一个事件处理的自定义ContentEvent

 

 

package events
{
	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);
		}
		//重写Clone 自定义Event必须重写Clone方法
		override public function clone():Event
		{
			var event:ContentEvent = new ContentEvent(type,bubbles,cancelable);
			event.users = users;
			event.error = error;
			return event;
		}
	}
}

 以上,DataLoader对于数据处理的逻辑就完成了,现在要创建一个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"
			    applicationComplete="init()" xmlns:net="net.*">

	<fx:Script>
		<![CDATA[
			import events.ContentEvent;
			
			import mx.collections.ArrayCollection;
			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("data/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:Panel verticalCenter="0" horizontalCenter="0" title="Mix" width="450" height="300">
		<s:List id="userList" width="100%" height="100%"/>
	</s:Panel>
</s:Application>

 

 

关于传入的XML,在于data/content.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user name="" site=""/>
</users>

 的形式。

 

 

 

 

 

分享到:
评论

相关推荐

    flex4自定义事件用法

    1. **创建自定义事件类** - 首先,我们需要创建一个继承自`Event`类的新类。通常,我们会选择`flash.events.Event`或`mx.events.FlexEvent`作为基类,前者适用于基本事件,后者则为Flex框架提供了一些额外的属性和...

    flex3自定义DownloadProgressBar

    本文将围绕“flex3自定义DownloadProgressBar”这一主题展开,讲解如何在Flex3中创建一个定制化的下载进度条组件,并探讨相关的编程技术和实践。 一、自定义组件基础 在Flex中,自定义组件是通过继承已有的...

    Flex中如何创建自定义排序DataGrid控件的例子

    在Flex开发中,DataGrid控件是用于展示数据集的常用组件,它可以显示表格形式的数据并支持用户交互,如排序、选择和编辑。...但通过以上解释,你应该已经理解了如何在Flex中创建自定义排序的DataGrid控件。

    Flex4自定义右键菜单源码.rar

    在Flex4中创建自定义右键菜单的步骤大致如下: 1. **创建ContextMenu对象**:首先,我们需要创建一个ContextMenu对象,它是所有菜单项的容器。 ```actionscript var contextMenu:ContextMenu = new ContextMenu();...

    Flex自定义组件和事件

    此时,开发者需要创建自定义组件来扩展Flex的功能,以实现个性化设计或定制化行为。 #### 2. 自定义组件的基本步骤 - **继承基类**:Flex提供了一些基础组件类,如UIComponent、Canvas或Button等,我们可以选择...

    Flex自定义右键菜单

    2. **创建自定义菜单**: - 使用`Menu`类实例化菜单对象,然后添加菜单项(`MenuItem`)。 - 示例代码: ```actionscript var rightClickMenu:Menu = new Menu(); var menuItem1:MenuItem = new MenuItem(); ...

    Flex3自定义的加载进度条

    在Flex3中,我们可以创建自定义组件来扩展或替换内置组件。首先,你需要了解MXML和ActionScript 3.0的基本语法,以及Component类和UIComponent类的概念。UIComponent是所有Flex组件的基类,你可以通过继承它来创建...

    flex自定义组件事件DEMO

    1. Flex自定义组件:Flex允许开发者通过继承现有的UIComponent或者更具体的类(如Button、Canvas等)来创建自定义组件。这样可以定义独特的外观、行为和功能。自定义组件通常包含以下几个关键部分: - 美观设计:...

    Flex4视频教程_02-03用AS自定义事件.rar

    1. **创建自定义事件**:首先,你需要创建一个新的ActionScript类,这个类将继承自Flash的Event类或其子类,如MouseEvent、KeyboardEvent等。在新类中,你可以添加额外的属性、方法以及构造函数来满足特定的需求。...

    Flex 自定义Datagrid的ItemRender

    通过创建自定义的ItemRenderer类,我们可以自由地设计数据呈现的方式,包括样式、交互和组件组合。 1. **创建自定义ItemRenderer** 要创建一个自定义ItemRenderer,首先需要继承Flex的基础ItemRenderer类,如...

    flex自定义事件、简单例子说明

    要创建自定义事件,首先需要继承自`Event`类,并重写构造函数。以下代码展示了如何创建一个名为`MyEvent`的自定义事件类: ```actionscript package ascode { import flash.events.Event; public class MyEvent ...

    flex 自定义加载进度框

    4. **Flex Component Life Cycle**:了解Flex组件的生命周期,知道何时在哪个阶段插入自定义预加载器。 5. **动画和图形设计**:在Flash中创建和编辑动画,可以使用ActionScript控制动画的播放。 6. **集成到Flex...

    Flex4视频教程_02-02用mxml自定义事件.rar

    要创建自定义事件,你需要继承这个基类,并添加自己的属性和方法。例如,你可以创建一个名为`CustomEvent`的类,如下所示: ```actionscript public class CustomEvent extends Event { public static const MY_...

    flex4权威指南配套源码

    10. **自定义组件**:掌握如何创建自定义组件,扩展Flex的功能以满足特定项目需求。 通过逐个分析和运行"flex4tfs每课源码"中的例子,你不仅能够深入理解Flex 4的各个方面,还能提升实际开发能力。同时,这些源码也...

    Flex 3完整的右键自定义菜单Demo

    在Flex 3中,我们主要使用mx.controls.ContextMenu类来创建自定义的右键菜单。首先,我们需要创建一个ContextMenu对象,并添加MenuItem实例作为菜单项。每个MenuItem可以有自己的标签、事件处理函数以及图标等属性,...

    flex屏蔽系统右键菜单 & 自定义菜单

    4. 自定义右键菜单(ContextMenu类):Flex提供了`ContextMenu`类,我们可以使用它来创建自定义的右键菜单。首先创建一个`ContextMenu`实例,然后添加`ContextMenuItem`对象作为菜单项。每个`ContextMenuItem`可以有...

    flex自定义多级系统菜单

    在Flex中,我们可以利用其强大的组件库来构建用户界面,其中包括创建自定义多级系统菜单的功能。这个“flex自定义多级系统菜单”的话题,主要是关于如何在Flex中通过XML配置实现动态、多层次的菜单结构。 在Flex中...

    flex自定义加载器

    在Flex中,我们可能需要根据项目需求对Loader进行扩展,创建自定义加载器。这通常涉及到以下方面: - **状态监控**:添加事件监听器来跟踪加载进度,如`ProgressEvent.PROGRESS`,以显示加载进度条。 - **错误...

    flex自定义右键菜单 完全屏蔽

    标题提到的"flex自定义右键菜单 完全屏蔽"是指在Flex应用程序中,不仅实现对默认右键菜单的完全屏蔽,还允许开发者根据自己的需求创建并应用自定义的右键菜单。这种方法避免了使用JavaScript进行跨域通信来实现屏蔽...

    flex 自定义右键菜单 多级右键菜单

    在Flex开发中,自定义右键菜单和实现多级右键菜单是一项常见的需求,它能够为用户界面提供更丰富的交互体验。Flex是一个基于ActionScript 3.0的开放源代码框架,用于构建富互联网应用程序(RIA)。下面我们将深入...

Global site tag (gtag.js) - Google Analytics