以加载一个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>
的形式。
相关推荐
1. **创建自定义事件类** - 首先,我们需要创建一个继承自`Event`类的新类。通常,我们会选择`flash.events.Event`或`mx.events.FlexEvent`作为基类,前者适用于基本事件,后者则为Flex框架提供了一些额外的属性和...
本文将围绕“flex3自定义DownloadProgressBar”这一主题展开,讲解如何在Flex3中创建一个定制化的下载进度条组件,并探讨相关的编程技术和实践。 一、自定义组件基础 在Flex中,自定义组件是通过继承已有的...
在Flex开发中,DataGrid控件是用于展示数据集的常用组件,它可以显示表格形式的数据并支持用户交互,如排序、选择和编辑。...但通过以上解释,你应该已经理解了如何在Flex中创建自定义排序的DataGrid控件。
在Flex4中创建自定义右键菜单的步骤大致如下: 1. **创建ContextMenu对象**:首先,我们需要创建一个ContextMenu对象,它是所有菜单项的容器。 ```actionscript var contextMenu:ContextMenu = new ContextMenu();...
此时,开发者需要创建自定义组件来扩展Flex的功能,以实现个性化设计或定制化行为。 #### 2. 自定义组件的基本步骤 - **继承基类**:Flex提供了一些基础组件类,如UIComponent、Canvas或Button等,我们可以选择...
2. **创建自定义菜单**: - 使用`Menu`类实例化菜单对象,然后添加菜单项(`MenuItem`)。 - 示例代码: ```actionscript var rightClickMenu:Menu = new Menu(); var menuItem1:MenuItem = new MenuItem(); ...
在Flex3中,我们可以创建自定义组件来扩展或替换内置组件。首先,你需要了解MXML和ActionScript 3.0的基本语法,以及Component类和UIComponent类的概念。UIComponent是所有Flex组件的基类,你可以通过继承它来创建...
1. Flex自定义组件:Flex允许开发者通过继承现有的UIComponent或者更具体的类(如Button、Canvas等)来创建自定义组件。这样可以定义独特的外观、行为和功能。自定义组件通常包含以下几个关键部分: - 美观设计:...
1. **创建自定义事件**:首先,你需要创建一个新的ActionScript类,这个类将继承自Flash的Event类或其子类,如MouseEvent、KeyboardEvent等。在新类中,你可以添加额外的属性、方法以及构造函数来满足特定的需求。...
通过创建自定义的ItemRenderer类,我们可以自由地设计数据呈现的方式,包括样式、交互和组件组合。 1. **创建自定义ItemRenderer** 要创建一个自定义ItemRenderer,首先需要继承Flex的基础ItemRenderer类,如...
要创建自定义事件,首先需要继承自`Event`类,并重写构造函数。以下代码展示了如何创建一个名为`MyEvent`的自定义事件类: ```actionscript package ascode { import flash.events.Event; public class MyEvent ...
4. **Flex Component Life Cycle**:了解Flex组件的生命周期,知道何时在哪个阶段插入自定义预加载器。 5. **动画和图形设计**:在Flash中创建和编辑动画,可以使用ActionScript控制动画的播放。 6. **集成到Flex...
要创建自定义事件,你需要继承这个基类,并添加自己的属性和方法。例如,你可以创建一个名为`CustomEvent`的类,如下所示: ```actionscript public class CustomEvent extends Event { public static const MY_...
10. **自定义组件**:掌握如何创建自定义组件,扩展Flex的功能以满足特定项目需求。 通过逐个分析和运行"flex4tfs每课源码"中的例子,你不仅能够深入理解Flex 4的各个方面,还能提升实际开发能力。同时,这些源码也...
在Flex 3中,我们主要使用mx.controls.ContextMenu类来创建自定义的右键菜单。首先,我们需要创建一个ContextMenu对象,并添加MenuItem实例作为菜单项。每个MenuItem可以有自己的标签、事件处理函数以及图标等属性,...
4. 自定义右键菜单(ContextMenu类):Flex提供了`ContextMenu`类,我们可以使用它来创建自定义的右键菜单。首先创建一个`ContextMenu`实例,然后添加`ContextMenuItem`对象作为菜单项。每个`ContextMenuItem`可以有...
在Flex中,我们可以利用其强大的组件库来构建用户界面,其中包括创建自定义多级系统菜单的功能。这个“flex自定义多级系统菜单”的话题,主要是关于如何在Flex中通过XML配置实现动态、多层次的菜单结构。 在Flex中...
在Flex中,我们可能需要根据项目需求对Loader进行扩展,创建自定义加载器。这通常涉及到以下方面: - **状态监控**:添加事件监听器来跟踪加载进度,如`ProgressEvent.PROGRESS`,以显示加载进度条。 - **错误...
标题提到的"flex自定义右键菜单 完全屏蔽"是指在Flex应用程序中,不仅实现对默认右键菜单的完全屏蔽,还允许开发者根据自己的需求创建并应用自定义的右键菜单。这种方法避免了使用JavaScript进行跨域通信来实现屏蔽...
在Flex开发中,自定义右键菜单和实现多级右键菜单是一项常见的需求,它能够为用户界面提供更丰富的交互体验。Flex是一个基于ActionScript 3.0的开放源代码框架,用于构建富互联网应用程序(RIA)。下面我们将深入...