• 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。

  • 相关阅读:
    Spring Boot 详细简介
    Linux 安装 MySQL 8 数据库(图文详细教程)
    有了这个日期工具类,让日期转化不再烦恼
    Linux常用实用命令
    Java分割中英文,并且中文不能分割一半?
    Spring MVC或Spring Boot配置默认访问页面不生效?
    js如何判断当前页面是否处于激活状态
    博客园 & 陌上花开HIMMR | 脱单倒计时!只能帮你到这了
    博客园 & 陌上花开HIMMR | 距2020年脱单,只剩34天!
    博客园 & 陌上花开HIMMR | 脱单倒计时!刚过完10.24的你,还想一个人过11.11吗?
  • 原文地址:https://www.cnblogs.com/appleseed/p/1382226.html
Copyright © 2020-2023  润新知