论坛首页 编程语言技术论坛

flex 自定义事件

浏览 2551 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-15  
因为是自学的flex,才不到一个月,所以这个只是简单的自我理解,有错请大家积极指正,一起学习。

首先自己写一个as,就是自己定义的事件类

CustomEvent.as简单代码如下:
package action.myevent
{
	import flash.events.Event;
	import flash.events.EventDispatcher;

	public class CustomEvent extends Event
	{
		public var data:Object;
		/**
		 * 定义一个事件分发器,用于分发事件
		 */
		public static const dispatcher:EventDispatcher = new EventDispatcher();
		/**
		 * 参数说明:
		 * 	type:String — 事件的类型,就是自己定义的事件的名字
		    data:Object - 通过此事件传递的参数
 			bubbles:Boolean (default = false) — 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。  
 			cancelable:Boolean (default = false) — 确定是否可以取消 Event 对象。默认值为 false。  
		 
		 	个人对于自定义事件的理解:分发器dispatcher可以看成是一辆小车,自定义事件构造器中的data是放在这辆小车上的一件物品
		 	当自定义事件被分发出去后(类似于把小车推出去了),由监听该自定义事件的方法捕获(即拿到了小车),然后在处理的方法里面
		 	拿到小车上的物品进行处理
		 */
		public function CustomEvent(type:String,data:Object,bubbles:Boolean=false, cancelable:Boolean=false)
		{
			super(type, bubbles, cancelable);
			this.data = data;
		}
		
		override public function clone():Event{
			return new CustomEvent(type,data);
		} 
	}
}


这里我把事件类型单独写了一个as,方便管理
EventNames.as代码:
package action.myevent
{
	public class EventNames
	{
		public static const CATALOGROW:String = "CATALOGROW";
		public function EventNames()
		{
			
		}

	}
}


在mxml中添加自定义事件的监听,并处理数据
private function init():void{
				//添加自定义事件的监听,监听到后转到setinfo方法
				CustomEvent.dispatcher.addEventListener(EventNames.CATALOGROW,setinfo);
			}
			
			private function setinfo(e:CustomEvent):void{
				//e:小车,data物品
				//从小车上拿物品
				catalogsid = e.data as String;
				//拿到后的处理
				fac.findAuthbyCatalog(catalogsid);
			}

当然需要有地方分发“小车”才行,分发自定义事件代码
CustomEvent.dispatcher.dispatchEvent(new CustomEvent(EventNames.CATALOGROW,catalogsid));

可以结合动态树那篇文章一起看
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics