转载于:http://blog.163.com/it_yinliqing/blog/static/784972712010101512031300/
事件流的流向:从上→下,到达 目标对象 ,从下→上。从上→下属于捕获阶段,从下→上冒泡阶段,捕获阶段默认是关闭的。事件流检测过程中检测对象是否注册了事件,如果注册了事件则相应(执行对应的函数)。当捕获阶段设置为true时,冒泡阶段和目标阶段都不执行。
一、注册事件说明:btn.addEventListener(type,fun,useCapture);
1.type:事件类型,实际是字符串常量,表示事件的类型
2.fun:事件处理函数
3.useCapture :是否打开捕获,true:在捕获阶段触发事件(不执行目标阶段和冒泡阶段) false:在冒泡阶段触发事件(不执行捕获阶段)
二、移除事件说明:removeEventListener(type:string,listener:fun,useCapture:boolean=false)
1.type:事件类型,该类型要与注册时的类型对应
2.fun:事件处理函数,移除事件时调用的方法,该方法要与注册时的方法对应
3.useCapture:是否打开捕获
三、分发事件:dispatchEvent(evt:Event):将事件加入到事件流中。
1.使用方法:首先要注册监听,然后再一个方法中分发事件,到事件流中。
2.dispatchevent(),在btn事件处理函数中,通过btn分发了"TestEvent"事件到事件流中,事件流经过的对象有,btn、cav、app。在事件流经过这些对象时,发现cav注册了"TestEvent"事件,所以就出发了该事件。如果cav没有在事件流中,那么将不触发该事件。