Archive

Posts Tagged ‘事件机制’

[面试最爱问的问题1]Flex/AS3的事件机制

July 19th, 2010 momoko8443 No comments

今天静下心来看了几篇as3事件机制的教程,终于整明白这个面试中最爱问的问题了,嘎嘎!

具体场景描述如下

容器深度:Application->Canvas->HBox->Button;

其中在HBox这个容器中有段代码

button.addEventListener(MouseEvent.Click,onButtonClickHandler);

阶段0:触发阶段,事件被触发,场景中的情况就是用户点击了Button,翻译为代码就是Button中执行了“ dispatch(new MouseEvent(MouseEvent.Click));”大家可以看下Event类中有个target的属性,这个属性就记录着Button这一事件发起者的对象

阶段1:捕获阶段,一旦有事件被触发,FP则会带着这个Event对象从整个程序的最上层开始往下遍历 ,顺序为Application->Canvas->HBox->Button,不停地匹配Event里面中的Target对象和当前遍历到的容器或是组件是不是为同一个对象

阶段2:目标阶段,终于在HBox这个容器中发现到了Button和Event中Target所指向的对象是同一个,ok,事件触发者Button终于被我挨家挨户的排查中找着了。

阶段3:冒泡阶段,从捕获到的目标Button,开始自下而上得往一级级parent走,看看到底是谁会关心Button被用户点击了。

于是再一级级往上HBox->Canvas->Application;果然在遍历到HBox的时候发现它曾经为Button的Click事件加过监听。

阶段4:执行阶段,事件的关心者HBox也找到了,那么执行onButtonClickHandler这个函数即可。

Categories: development Tags: