本来是想提问的,关于stopPropagation和stopImmediatePropagation的区别
后来研究了一下,终于明白了stopImmediatePropagation的作用,总结就是“可以阻止掉同一事件的其他优先级较低的侦听器的处理”
比如以下代码:
- this.addEventListener(MouseEvent.MOUSE_DOWN, funA,false,2);
- this.addEventListener(MouseEvent.MOUSE_DOWN, funB,false,1);
- function funA (evt:MouseEvent):void
- {
- trace ("A!");
- evt.stopImmediatePropagation ();
- }
- function funB (evt:MouseEvent):void
- {
- trace ("B!");
- }
因为侦听器funA的优先级为2比funB高,所以先执行了funA,而在funA里面有evt.stopImmediatePropagation ();因此funB没有被执行 输出结果就是一个"A"。
stopPropagation
停止后续节点的事件侦听,当前节点注册的侦听器可用。如funA和funB,后续则不可用。
stopImmediatePropagation
停止当前节点和后续节点的事件侦听,有优先级,则按优先级顺序,无优先级则按注册侦听器的顺序。即执行到发出stopImmediatePropagation命令的侦听器后面的侦听器不可用。