关于actionscript 3.0事件流的小疑问?

我是一名初学者,我想知道事件流的捕获阶段,冒泡阶段究竟是干什么的?为什么会有这两个阶段?最好能举一个例子加以说明。我想的是假如我用鼠标单击屏幕上一个红色的方块,事件目标就... 我是一名初学者,我想知道事件流的捕获阶段,冒泡阶段究竟是干什么的?为什么会有这两个阶段?最好能举一个例子加以说明。
我想的是假如我用鼠标单击屏幕上一个红色的方块,事件目标就应该是该红色的方块。对于捕获阶段,那么该单击事件就是从舞台传到该红色的方块。但我想我的鼠标是直接点击的红色的方块,与舞台没有关系啊!怎么就存在捕获阶段了,我始终想不通。
希望大家用最简单的语言帮我解释一下,不要粘贴复制,因为那些官方语言我已经看了无数遍了,还是看不懂。
展开
 我来答
gohao皓
2013-07-23 · 超过12用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:27.7万
展开全部
等等我教你啊,悬赏要多
加我Q407735995,教你
Keensb
2013-07-23 · TA获得超过787个赞
知道小有建树答主
回答量:952
采纳率:0%
帮助的人:743万
展开全部

这样可以在事件流的各阶段去处理执行的函数啊。


假设你有一个影片剪辑实例名为mc,mc里面有一个按钮(实例名为btn)。现在你要实现这样的功能:当你点中mc中的btn的时候,mc整体位置往右移20;点中btn以外的位置的时候mc整体位置往下移动20,但是不可以同时往两个方向移动。


如果你同时给mc和mc.btn都注册了鼠标点击的侦听,那么你点中mc.btn的时候,同时也会响应点中mc的鼠标事件,因为mc.btn是mc的一部分,mc会同时往右和往下移动20。


这时候你可以通过冒泡阶段来做一点手脚,让mc收不到事件流的通知。事件侦听器一般默认是在冒泡阶段来执行事件函数。如果你看过并理解了有关事件流的资料,你应该理解当前事件流是这样的:


捕获阶段    stage →  mc  →  mc.btn

冒泡阶段    mc.btn →  mc  → stage


可以看出在冒泡阶段的时候,mc.btn比mc先获得事件流的通知。

事件对象中,有stopImmediatePropagation() 和 stopPropagation()这两个方法,都是能够阻断事件流的冒泡过程(二者有写区别,这里不阐述,可以去参帮助文档)。


详细代码

mc.addEventListener(MouseEvent.CLICK,mcClick);
mc.btn.addEventListener(MouseEvent.CLICK,btnClick);

function mcClick(e:MouseEvent)
{
mc.x+=20;
}

function btnClick(e:MouseEvent)
{
e.stopPropagation()//当鼠标点击在按钮上时,阻断冒泡阶段的事件流,mc将收不到通知,mc.x+=20  也不会被执行。
mc.y+=20;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式