as3 dispatch

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 functionMyEvent(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(newMyEvent(MyEvent.ALPHA));

        }

     }

}

注:在as3中只有事件的发送者才能侦听事件。在Main类中sample实例发送的事件也只有sample注册的侦听器才能侦

听,在Sample中的this正是指向了sample。

原文地址:http://www.cnblogs.com/appleseed/archive/2009/02/02/1382226.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值