Flex 中的Event Propogation

Flex中的Event传递主要有三个阶段:capturing, targeting, bubbling。比如一个Button收到了一个消息,首先会从其根父UI Object上开始逐步Capture直到其父Object,然后由该Button履行Target阶段,最后再以Capture相反的方向Bubble。当然这些阶段都是相对DisplayObject来说的,对于其他的Object比如Socket,Event只会交给Target对象处理。

先来看Capture阶段:

这个阶段是从父到子的一个过程,典型应用:myPanel.addEventListener(MouseEvent.MOUSE_DOWN, clickHandler, true);

注意第三个参数useCapture被设为true,表示clickHandler只想处理Capture过程的事件,如果还想处理bubble阶段的事件,那么必须再以useCapture=false调用一次addEventListener

Flex Develop Guide中有一句话:The capturing phase is very rarely used, and it can also be computationally intensive. By contrast, bubbling is much more common.我还不是特别理解,先写下来再说吧。

再看Target阶段:

这个很简单,由DispatchEvent的对象直接处理。

然后是Bubble阶段。Bubble阶段只有bubbles属性为true的Event才会有这个过程,包括change, click, doubleClick, keyDown, keyUp, mouseDown, and mouseUp等事件。对于自定义事件,bubbles能否设成true还未知,因为它似乎是只读的,还有待验证。

posted on 2007-09-19 22:51 雁过无痕 阅读(661) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

常用链接

留言簿(7)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜