• dispatchEvent


    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。

  • 相关阅读:
    javascript 如何获取return回来的对象值
    遮罩层背景设置
    Javascript跨域请求的几种解决方法
    手机端viewport的设置规范
    javascript定义类和类的实现
    javascript 中对this关键字的一些理解
    实例化对象的时候。其实就是调用构造函数
    Javascript定义类(class)的三种方法
    javascript面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
    JavaScript判断横屏/竖屏
  • 原文地址:https://www.cnblogs.com/appleseed/p/1382226.html
Copyright © 2020-2023  润新知