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

  自定义事件一直是困扰我的大问题之一,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()函数的时候就是事件要发生的时候。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值