浏览 2551 次
锁定老帖子 主题:flex 自定义事件
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-15
首先自己写一个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)); 可以结合动态树那篇文章一起看 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |