一、了解观察者模式
- 什么是观察者模式?
- 生活中的观察者模式(好莱坞原则、订阅报纸、房产中介…)
- AS3中事件例子: 如下监听click事件,一发生就调用onClick()函数
- button.addEventListener(“click”,onClick);
- internal function onClick(evt:MouseEvent):void{
txt.text=“click a button!”;
}
- 了解下图:
二、事件流
1.捕获事件(从根节点到子节点,检测对象是否注册了监听器,是则调用监听函数) 2.目标阶段(调用目标对象本身注册的监听程序) 3.冒泡阶段(从目标节点到根节点,检测对象是否注册了监听器,是则调用监听函数)注:事件发生后,每个节点可以有2个机会(2选1)响应事件,默认关闭捕获阶段。可以参考例子EventDemo2
IEventDispatcher接口
addEventListener( ) 注册事件监听器
removeEventListener( ) 移除事件监听器
dispatchEvent( ) 派发事件,从一个时间引发另一个事件较多。
EventDispatcher类,见参考手册
addEventListener
addEvnetListener(type:String,listener:Function,useCapture:Boolean=false,priority:int=0,useWeakReference:Boolean=false)
removeEventListener(type:String,listener:Function,useCapture:Boolean=false)
三、Event对象
Event 类作为创建 Event 对象的基类,当发生事件时,Event 对象将作为参数传递给事件侦听器。
MouseEvent
KeyboardEvent
查参考手册ActionScript3.0中文版.chm
四、如何自定义事件
1.创建自定义事件名称的Event
参考例子EventDemo3
dispatchEvent(new Event(“myEvnet”,true,false);
2.创建自定义事件类
Public class MyEvent extends Event{
….
}
例:拖曳事件的实现
DragManager(mx.managers)
DragSource
DragEvent
见参考手册和实例DragExample_1