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>
    

      

  • 相关阅读:
    BZOJ4916: 神犇和蒟蒻 杜教筛
    BZOJ 4816: [Sdoi2017]数字表格 莫比乌斯反演
    BZOJ 4407: 于神之怒加强版 莫比乌斯反演 + 线筛积性函数
    BZOJ 3963: [WF2011]MachineWorks 斜率优化 + splay动态维护凸包
    BZOJ 1492: [NOI2007]货币兑换Cash 斜率优化 + splay动态维护凸包
    BZOJ 3306: 树 LCT + set 维护子树信息
    小A与最大子段和 斜率优化 + 二分 + 细节
    BZOJ 3675: [Apio2014]序列分割 动态规划 + 斜率优化 + 卡精度
    BZOJ 2726: [SDOI2012]任务安排 斜率优化 + 凸壳二分 + 卡精
    luoguP2365 任务安排 斜率优化 + 动态规划
  • 原文地址:https://www.cnblogs.com/sunrunzhi/p/3371759.html
Copyright © 2011-2022 走看看