游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2451|回复: 0

FlexBuilder中的事件传播

[复制链接]

1

主题

1

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2013-9-12 10:54:10 | 显示全部楼层 |阅读模式
FlexBuilder教程中事件触发后,Flex有3个检测事件监听器的阶段,3个阶段的发生的顺序如下:
A.捕获阶段:在捕获阶段,Flex在显示列表中检查事件的祖先是否注册了事件的监听器.Flex从根节点开始顺序而下.大多数情况中,根节点是Application对象.同时,Flex改变事件的currentTarget值.缺省情况下,在此阶段,没有容器监听事件.use_capture参数的值是False,在此阶段添加监听的唯一方法是在调用add_listener时,传入一个为True值的use_capture参数,比如:myAccordion.addEventListener(MouseEvent.MOUSE_DOWN,customLogEvent,true);
如果是在Mxml中添加监听,Flex设置此参数为False,没有办法进行修改.如果设置了use_capture为True,那么事件将不会上浮.如果既想捕获又想上浮就必须调用addEventListener两次.一次use_capture参数为true,一次为false;捕获很少使用,上浮的使用更为普遍.
B.目标阶段:在目标阶段,Flex激发事件的监听程序,不检查其他的节点.
C.上浮阶段:事件只在bubbles属性为True时才进行上浮.可以上浮的事件包括:change,click,doubleClick,keyDown,keyUp,mouseDown,mouseUp.在上浮阶段,Flex改变事件的currentTarget属性,而target属性是初始派发事件的对象.
在任意一个阶段,节点们都有机会操作事件.比如:用户点击了一个在VBox中的Button,在捕获阶段,Flex检查Application对象(根节点)和VBox是否有监听器处理此事件.Flex然后在目标阶段触发按钮的监听器.在上浮阶段,VBox和应用以与捕获阶段相反的顺序再次获得机会处理事件.
在actionscript 3.0中,你可以在任意目标节点上注册事件监听器.但是部分事件会被直接传给目标节点,比如Socket类.捕获阶段的节点顺序是从父节点到子节点的,而上浮阶段刚好相反.
捕获事件缺省是关闭的,也就是说如果要捕获事件,必须显式指定在捕获阶段进行处理.
每一个Event都有target和currentTarget属性,帮助跟踪事件传播的过程.

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-15 05:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表