博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flex中dispatchEvent的用法(自定义事件) .
阅读量:6956 次
发布时间:2019-06-27

本文共 1448 字,大约阅读时间需要 4 分钟。

Evevt和EventDispatcher类在as3的事件机制中是很重要的角色,dispatchEvent()是EventDispatcher类的一个事件发送方法,它可以发送出Event类或其子类的实例,在as3中所有的显示对象都可以发送事件,因为as3中所有的显示对象都是EventDispatcher子类DisplayObject的实例。

   发送事件有三种方式:继承EventDispatcher,如sprite等显示对象、复合EventDispatcher或其子类、实现IEventDispatcher接口。
   个人认为复合EventDispatcher在实际应用中用的比较多,没有找到合适例子,自己写了一个很简单的,仅供参考,为了演示把简单的问题复杂话了,首先画一个矩形,点击矩形后发送一个事件,矩形接收事件后alpha变为0;
自定义事件:
package{
   import flash.events.Event;
   public class MyEvent extends Event{
         public static const ALPHA:String = "alpha";
            public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false){
            super(type, bubbles, cancelable);
            }
      }
}
package{
import flash.display.Sprite;
public class Sample extends Sprite{
       public function Sample(){
         this.graphics.beginFill(0xff6600);
         this.graphics.drawRect(50,50,100,50);
         this.graphics.endFill();
         this.addEventListener(MyEvent.ALPHA,blackHandler);
   }
   private function blackHandler(evt:MyEvent){
         this.alpha = 0;
   }
}
}
主类:
package{
   import flash.display.Sprite;
   import flash.events.MouseEvent;
   public class Main extends Sprite{
             private var sample:Sample;
             public function Main(){
            sample = new Sample();
            //注册事件侦听器
            sample.addEventListener(MouseEvent.CLICK,clickHandler);
            addChild(sample);
       }
       private function clickHandler(evt:MouseEvent){
             //发送事件
            sample.dispatchEvent(new MyEvent(MyEvent.ALPHA));
       }
    }
}
注:在as3中只有事件的发送者才能侦听事件。在Main类中sample实例发送的事件也只有sample注册的侦听器才能侦听,在Sample中的this正是指向了sample。
这个例子很简单,只是为了展示事件的发送接收,你还可以扩展自定义的Event类,带上你想发送的参数

转载地址:http://mpmil.baihongyu.com/

你可能感兴趣的文章
企业级 SpringBoot 教程 (九)springboot整合Redis
查看>>
Kubernetes Ingress 日志分析与监控的最佳实践
查看>>
Git无法使用
查看>>
重大消息,为企业、创业者提供直播解决方案的智播就要发布了
查看>>
Angularjs 配合bootstrap-datetimepicker.js ngModel取不到
查看>>
ORA-31623: a job is not attached to this session via the specified handle
查看>>
mysql索引
查看>>
http服务器的目录安全性配置
查看>>
部署k8s ssl集群实践10:work节点基础环境
查看>>
Linux下DHCP中继代理配置
查看>>
如何在Xcode中添加依赖的lib工程
查看>>
linux使用nfs、portmap服务共享远程磁盘的方法
查看>>
usermod、用户密码管理、mkpasswd
查看>>
iptables表的备份和恢复、firewalld的9个zone、zone操作、service操作
查看>>
网友精选25个Java试题分享
查看>>
网络工程师必备的好帮手usb转console调试线
查看>>
加密文件系统EFS
查看>>
怎样禁止修改ip地址
查看>>
Filebeat的Registry文件解读
查看>>
Iphone H5上传照片被旋转
查看>>