EventDispatcher类详解
2010年06月14日 星期一 18:26
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.ALPHAALPHA,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。
事实上,没有什么要比发现、培养、呵护、调整自己的心智的力量更重要的事情了.........
转载地址:[url]http://hi.baidu.com/chancelia/blog/item/1a40a423b64808a94623e80c.html[/url]
事件发送之复合EventDispatcher对象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Adobe AIR介绍(转载)
iteye_96
2020-02-26 05:09:37
深入分析Flex [Bindable] 以及使用方法(转载)
iteye_96
2020-02-26 05:09:37
初识Flex Data Services(FDS)(转载)
iteye_96
2020-02-26 05:09:37
Adobe AIR技术优势(装载)
iteye_96
2020-02-26 05:09:37
label/textBase showTruncationTip/isTruncated属性
iteye_96
2018-08-31 08:55:08
Event类的实例方法
iteye_96
2018-08-31 08:54:49
使用ItemRenderer处理基于List容器的显示内容 [DataGrid, Tree, List等]
iteye_96
2018-08-31 08:54:36
Flex 4 and the Text Layout Framework
iteye_96
2018-08-31 08:54:36
请求服务器数据,解决IIE缓存问题
iteye_96
2018-08-31 08:54:31
关于flex 的命名空间及访问控制符问题
iteye_96
2018-08-31 08:54:31
如何加载一个swf文件中类的方法
iteye_96
2018-08-31 08:54:31
flex3 ,flex4 skin
iteye_96
2018-08-31 08:54:30
24小時熱門文章