[AS3]as3中Evevt和EventDispatcher类用法
事件的发起和捕获,发生在同一个对象身上。
Evevt和EventDispatcher类在as3的事件机制中是很重要的角色,dispatchEvent()是EventDispatcher类的一个事件发送方法,它可以发送出Event类或其子类的实例,在as3中所有的显示对象都可以发送事件,因为as3中所有的显示对象都是EventDispatcher子类DisplayObject的实例。
发送事件有三种方式:继承EventDispatcher,如sprite等显示对象、复合EventDispatcher或其子类、实现IEventDispatcher接口。
下面是一个简单的例子,仅供参考,为了演示把简单的问题复杂话了,首先画一个矩形,点击矩形后发送一个事件,矩形接收事件后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();
- //CuPlayer.com提示:注册事件侦听器
- _sample.addEventListener(MouseEvent.CLICK,clickHandler);
- addChild(_sample);
- }
- private function clickHandler(evt:MouseEvent){
- //CuPlayer.com提示:触发并广播事件
- _sample.dispatchEvent(new MyEvent(MyEvent.ALPHA));
- }
- }
- }
注:在as3中只有事件的发送者才能侦听事件。
在Main类中sample实例发送的事件也只有sample注册的侦听器才能侦听。
这个例子很简单,只是为了展示事件的发送接收,你还可以扩展自定义的Event类,带上你想发送的参数。
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例