`
Fis
  • 浏览: 84623 次
  • 性别: Icon_minigender_1
  • 来自: 龙城
社区版块
存档分类
最新评论

[原创]AS3.0的自定义事件

    博客分类:
  • AS
阅读更多
  自定义事件一直是困扰我的大问题之一,dispatchEvent()、Event类、addEventListener()一直都不知道他们之间的联系和自定义事件的用法,尤其是在类与类间调用方法这些方面上更是感到玄之又玄…… 幸运的是随着使用AS时间的推移,逐渐让我体会了一些东西,也不知道是否正确,但终究值得写上一点。
  这个例子很简单,首先是一个fla文件——自定义事件.fla,为了简便,没有设置文档类。然后是一个外部类文件——MyEvent.as,这个就是我们的自定义事件类,保存了自定义事件的名称和可能用到的参数。他的代码如下:
package {
	import flash.events.Event;
	public class MyEvent extends Event{
		public static const MY_EVENT="my_event";
		public var name:String="";
		public function MyEvent(eventType:String, args:String){
			super(eventType);
			name=args;
		}
	}
}

  从上面可以很清楚的看到,在实例化类的时候就为这个新的事件对象添加了事件类型eventType和事件参数name。 这里eventType作为参数传递给了父级类Event的构造函数,以达到区分事件的目的。
  fla文件上的代码如下:
thing_mc.addEventListener(MouseEvent.CLICK, onFunc);
thing_mc.addEventListener(MyEvent.MY_EVENT, onFunc2);
function onFunc(e:MouseEvent){
	trace("按钮事件");
	thing_mc.dispatchEvent(new MyEvent(MyEvent.MY_EVENT, "自定义事件"));
}
function onFunc2(e:MyEvent){
	trace(e.name);
}

  thing_mc是舞台上的影片剪辑。在其上添加了一个点击事件,在点击触发函数onFunc中,调度了我们的自定义事件MyEvent.MY_EVENT,这就是个伏笔,若在thing_mc上注册有MyEvent.MY_EVENT类的事件处理函数,则该处理函数就会被调用,这里的处理函数就是onFunc2。
  综合以上,在整个过程当中,开头提到的Event类告诉程序要做的是“什么事”,addEventListener()告诉程序这件事“如何做”,dispatchEvent()则决定“何时做”这件事,即调用dispatchEvent()函数的时候就是事件要发生的时候。
分享到:
评论
4 楼 Fis 2012-04-11  
阿呆jinsss 写道
楼主说的简单易懂,最适合我这些理解能力差点的人,谢谢了~

:) 不客气  多多交流
3 楼 阿呆jinsss 2012-04-08  
楼主说的简单易懂,最适合我这些理解能力差点的人,谢谢了~
2 楼 Fis 2011-03-02  
xin_ny 写道
学习了,怎么我不能收藏啊!!!


难道是javaeye出Bug了?
1 楼 xin_ny 2011-02-16  
学习了,怎么我不能收藏啊!!!

相关推荐

Global site tag (gtag.js) - Google Analytics