Chinaunix首页 | 论坛 | 博客
  • 博客访问: 506059
  • 博文数量: 53
  • 博客积分: 4150
  • 博客等级: 上校
  • 技术积分: 825
  • 用 户 组: 普通用户
  • 注册时间: 2005-10-17 08:51
文章分类

全部博文(53)

文章存档

2011年(8)

2010年(28)

2009年(13)

2008年(4)

我的朋友

分类: 嵌入式

2011-05-12 15:19:43

关于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命令的侦听器后面的侦听器不可用。

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