Chinaunix首页 | 论坛 | 博客
  • 博客访问: 66275
  • 博文数量: 26
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-05 15:21
文章分类
文章存档

2013年(3)

2012年(23)

我的朋友

分类:

2012-11-22 15:23:27

关于stopPropagation和stopImmediatePropagation的区别
后来研究了一下,终于明白了stopImmediatePropagation的作用,总结就是“可以阻止掉同一事件的其他优先级较低的侦听器的处理”

比如以下代码:

  1. this.addEventListener(MouseEvent.MOUSE_DOWN, funA,false,2);
  2. this.addEventListener(MouseEvent.MOUSE_DOWN, funB,false,1);
  3. function funA (evt:MouseEvent):void
  4. {
  5.         trace ("A!");
  6.         evt.stopImmediatePropagation ();
  7. }
  8. function funB (evt:MouseEvent):void
  9. {
  10.         trace ("B!");
  11. }

因为侦听器funA的优先级为2比funB高,所以先执行了funA,而在funA里面有evt.stopImmediatePropagation ();因此funB没有被执行  输出结果就是一个"A"。 

stopPropagation
停止后续节点的事件侦听,当前节点注册的侦听器可用。如funA和funB,后续则不可用。

stopImmediatePropagation
停止当前节点和后续节点的事件侦听,有优先级,则按优先级顺序,无优先级则按注册侦听器的顺序。即执行到发出stopImmediatePropagation命令的侦听器后面的侦听器不可用。

阅读(911) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~