zoukankan      html  css  js  c++  java
  • 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>
    

      

  • 相关阅读:
    start tag, end tag issues in IE7, particularly in xslt transformation
    用SandCastle为注释生成chm文档
    Firebug
    架构的重点
    Linux Shell常用技巧(十) 管道组合
    Linux JDK升级
    Linux Shell常用技巧(十二) Shell编程
    Packet Tracer 5.0实验(一) 交换机的基本配置与管理
    Linux Shell常用技巧(六) sort uniq tar split
    Linux Shell常用技巧(二) grep
  • 原文地址:https://www.cnblogs.com/sunrunzhi/p/3371759.html
Copyright © 2011-2022 走看看