博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AS3.0 事件流
阅读量:7305 次
发布时间:2019-06-30

本文共 1362 字,大约阅读时间需要 4 分钟。

 

按照官方的事件流图解

 

实例讲解:

初始化:

舞台、父节点、Child1节点、Child2节点都是显示对象。

然后做如下操作:

舞台.addChild(父节点);父节点.addChild(Child1节点);父节点.addChild(Child2节点);父节点.addEventListener(MouseEvent.MOUSE_DOWN, function, false);Child1节点.addEventListener(MouseEvent.MOUSE_DOWN, function);

父节点和Child1节点分别添加了鼠标事件侦听器。

 

演示:

如果我点击Child1节点,Child1节点便发出一个MouseEvent事件(这就是我们的主角)

dispatchEvent(new MouseEvent());

接着该MouseEvent便开始了它的“旅程”,寻找它的侦听器们。

 

先说下这个MouseEvent的旅程(三个阶段):

 

 

1.这个MouseEvent从舞台出发,经过父节点,直到快要到达目的地Child1节点(它的出生地);

                                                                        -----------这个过程就是捕获阶段;

2.然后它经过Child1节点(它的出生地);

                                                                        -----------这个过程就是目标阶段;

3.最后原路返回,经过父节点,回到舞台;

                                                                        -----------这个过程就是冒泡阶段

上面蓝色的字就是MouseEvent途中经过的节点。

舞台→父节点→Child1节点→父节点→舞台

还可以设置减少MouseEvent的路程,只要设置bubbles:Boolean = false;

MouseEvent就只走捕获阶段和目标阶段,而不走冒泡阶段了。

 需要注意的是(MouseEvent和KeyboardEvent的bubbles默认为true,而Event的bubbles默认是false);

 

 

下面说下这个MouseEvent的任务(寻找它的侦听器们):

 

我们已经分别在父节点Child1节点添加了MouseEvent的侦听器(利用addEventListener)

  但是这些侦听器都有些怪脾气,父节点上的侦听器只在目标阶段和冒泡阶段才接收MouseEvent事件,

  捕获阶段就是经过了也不理睬。

  究其缘由是因为在addEventListener的时候默认设置了useCapture:Boolean = false;

  如果设置为true,那就只在捕获阶段接收MouseEvent,

  那如果要让父节点在所有阶段都接收MouseEvent事件呢?

  那就只好弄两个侦听器了,一个在捕获阶段接收,一个在目标冒泡阶段接收。

  如下:

父节点.addEventListener(MouseEvent.MOUSE_DOWN, function, false);父节点.addEventListener(MouseEvent.MOUSE_DOWN, function, true);

 

最后要记住,事件要途经注册侦听器的节点,并且该侦听器要同意在此阶段接受该事件,侦听器函数才会执行。

 

 

 

 

 

 

转载于:https://www.cnblogs.com/sdlwlxf/archive/2012/12/13/2816155.html

你可能感兴趣的文章
Http请求数据格式
查看>>
vue中组件之间传递数据的方法
查看>>
openSUSE 安装 PostgreSQL
查看>>
CSS Grid 初识
查看>>
leetcode77. Combinations
查看>>
Dokan+SSHFS 文件系统共享心得,代替Samba的理想之选
查看>>
快速判断浏览器是否支持特定css、js功能
查看>>
读Zepto源码之集合操作
查看>>
10 分钟可以干什么?搭建一个企业级网盘吧
查看>>
volatile详解
查看>>
【103天】前端碎片知识收集00001
查看>>
ajax交互post数据格式问题
查看>>
Go 1.8 http graceful 体验
查看>>
使用Rekit开发可扩展的前端应用
查看>>
使用 Scrum开发太阳能汽车
查看>>
中国技术力量:阿里技术崛起之路
查看>>
中国技术开放日专场在美国旧金山隆重开幕
查看>>
ArchSummit深圳APM专场总结:性能监控与调优实践干货分享
查看>>
关于“Fluent UI”或Ribbon Design报道的补充说明
查看>>
云硬盘架构升级和性能提升详解
查看>>