flex中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。

这个例子很简单,只是为了展示事件的发送接收,你还可以扩展自定义的Event类,带上你想发送的参数

flex中dispatchEvent的用法(自定义事件) .

时间: 2024-10-09 22:25:03

flex中dispatchEvent的用法(自定义事件) .的相关文章

自定义事件的触发dispatchEvent

1. 对于标准浏览器,其提供了可供元素触发的方法:element.dispatchEvent(). 不过,在使用该方法之前,我们还需要做其他两件事,及创建和初始化.因此,总结说来就是: document.createEvent() event.initEvent() element.dispatchEvent() 举个例子: var dom = document.querySelector('#id') document.addEventListener('alert', function (e

Dom3级事件下自定义事件

原文出处:  http://www.w3cfuns.com/notes/11861/e21736a0b15bceca0dc7f76d77c2fb5a.html . 我拿出作者中的一段,感谢作者原创. DOM中的事件模拟(自定义事件): DOM3级还定义了自定义事件,自定义事件不是由DOM原生触发的,它的目的是让开发人员创建自己的事件.要创建的自定义事件可以由createEvent("CustomEvent"); 返回的对象有一个initCustomEvent()方法接收如下四个参数.

JavaScript自定义事件 - createEvent()、initEvent()和dispachEvent()

参考资料: MDN - Document.createEvent():https://developer.mozilla.org/zh-CN/docs/Web/API/Document/createEvent MDN - Event.initEvent():https://developer.mozilla.org/zh-CN/docs/Web/API/Event/initEvent MDN - 创建和触发events:https://developer.mozilla.org/zh-CN/do

第四十四课、发送自定义事件(下)

一.自定义事件对象 1.Qt可以自定义新的事件类 (1).自定义的事件类必须继承自QEvent (2).自定义的事件类必须拥有全局唯一的Type值(event->type()可以获得事件的类型) (3).程序中必须提供处理自定义事件的方法 2.自定义事件类 (1).将QEvent作为父类继承 (2).指定全局唯一的Type值 3.Qt事件的Type值 (1).每个事件类都拥有全局唯一的Type值(类似于唯一的ID号) (2).自定义事件类的Type值也需要自定义 (3).自定义事件类使用QEve

第44课 发送自定义事件(下)

1. 自定义事件对象 (1)自定义事件类必须继承自QEvent (2)自定义的事件类必须拥有全局唯一的Type值 (3)程序中必须提供处理自定义事件对象的方法 2. 自定义事件类 (1)将QEvent作为父类继承 (2)指定全局唯一的Type值 class StringEvent: public QEvent { public: //提供全局唯一的Type值 static const Type TYPE = static_cast<Type>(QEvent::User + 0xFF); //.

js的自定义事件

js中的事件是js的一大技术点,说白了就是操作dom树的唯一途径. 关于事件无非两种绑定方式: document.getElementById('xxx').onclick = function(){ } document.getElementById("xxx").addEventListener("click", function(){ }); 前者和后者的区别无非就是绑定一个和多个,当多次绑定相同元素的时候,前者会覆盖,后者不会覆盖. 下面我们来看看如何自定义

Vue自定义事件

父组件使用props传递数据给子组件,子组件怎么跟父组件通信呢?这时,Vue的自定义事件就派上用场了.本文将详细介绍Vue自定义事件: 使用 v-on(eventName) 监听事件 使用 $emit(eventName) 触发事件 我们在myapp/src/components下新建一个组件Emit.vue,同时我们得在主组件APP.vue中引入该组件,以及注册该组件 然后我们在Emit.vue文件中去些一个自定义事件的例子 当我们点击按钮就能获取到组件内部的事件和参数 原文地址:https:

观察者模式(自定义事件)

开篇导读:在js中接触了内置的事件监听器,比如我们绑定了按钮的一个点击事件及赋予它一个事件处理函数,当点击按钮时便触发了这个内置监听器也就是onclick,于是开始执行我们赋予它的处理函数,由此我们会想到这种事件监听器我们自己可不可以定义呢?其实我们可以模拟内置事件的监听和触发过程,以此来达到我们需要的效果,在行业领域当中,它被称为观察者模式,直接上实现代码 //定义一个对象 let ObserverMode = { //定义添加自定义事件 on: function(){ // 判断参数是否满足

Flex中利用事件机制进行主程序与子窗体间参数传递

在开发具有子窗体,或者itemrenderer的应用时,常常涉及到子窗体向父窗体传递参数或者从itemrenderer内的控件向外部的主程序传递参数的需求.这些都可以通过事件机制这一统一方法加以解决.在我的应用中有两个需求: 1.左侧的List控件的itemrenderer中包含CheckBox控件,当其状态改变时需要同时改变主程序中的一个数组变量的内容:2.左下方的"新增届次"按钮会弹出一个窗口,窗口中输入届次信息后需要修改数据库中的表,同时表的更改结果要能够在List控件中体现出来