flex 中什么时候就要用到事件流机制?希望有心人士能详细解释.

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/19 10:01:13
flex 中什么时候就要用到事件流机制?希望有心人士能详细解释.
xVOXWQ7fY&$0I:CD oU_"ڊ1{m_칽6$F;9w&:>@j2S seVstY%e +%)gci>mٮzʬZ ̼{}nx3`quIa%T UP*ɷV7^lpZZƢ0ʹ9Fi\Rٞb^;91^]3P2 (iEI+{p^Xiց}^8ۇTS{[a^|>6c^ +fª.R7qCNer|Fap3 ! A,`(]C=XR|MyUJp 2͍Vl9nX_NQ'Hw[8xLxR\pntփouI BC$(]pNp#p41N&&G÷WTgܮS!V'"KSk|H#"V'_:ƃYS|/&Iġ&}qL~NAiT@-mN$%bOϋ4+=- '$ m@d9 pL76eI+QV8GODB|VN߅Ł}6*ː='9:mndӸU e`6E U-ꗡl{{s@u];gR &O#|(ѧUqeΔnH&í٪b `3ԃ6RBW/\tpx<$#nƏI3NU?,fOI^1b8ͦ}&A jE#Y#NЭ7Z k9匹- G3yJcǣ?%`T٬~jT.6 =g> qOSq@Ǻ^x , q#.q^J)SR}vw.%gE01x qQa1SCZ}a- gh#xou4`QqR^1)}#F{έi@J^// A^>RY(DmnL۶JbuH0ƚvg_zH?t9Y|{iS{ \eag_E

flex 中什么时候就要用到事件流机制?希望有心人士能详细解释.
flex 中什么时候就要用到事件流机制?希望有心人士能详细解释.

flex 中什么时候就要用到事件流机制?希望有心人士能详细解释.
Flex针对事件的处理分为两侧,一侧是产生和抛出(dispatch)事件,另一侧是监听和消费事件,这两侧是多对多的关系.
  事件的流转通常被划分为三个阶段:捕获阶段,命中阶段和冒泡阶段.
  在捕获阶段,Flash Player会自顶向下地检查是否存在事件对应的监听,直到抛出事件的目标对象的父容器为止.如果这些父对象上面存在对应的监听,且监听器的use_capture参数设置为true时,就会调用对应的回调函数.
  在命中阶段,Flash Player会检查抛出事件的目标对象自己是否存在对应的监听,如果发现对应的监听,则会调用对应的回调函数.
  在冒泡阶段,Flash Player首先会检查事件本身的bubbles属性是否为true,如果为true,则会从抛出事件的目标对象的父容器开始,自下向上地检查是否存在对应的监听,如果这些父对象上存在对应的监听,就会调用对应的回调函数.
  Flex内建的事件主要位于三个包下面:spark.events.*,mx.events.*,flash.events.*.
  addEventListener的语法如下:
componentInstance.addEventListener(
event_type:String,
event_listener:Function,
use_capture:Boolean,
priority:int,
weakRef:Boolean
)
  需要注意的是,use_capture参数是指定对应的监听器在事件流转的哪个阶段起作用,如果设置为true,监听器会在事件的捕获阶段生效;如果设置为false,监听器则不会在捕获阶段生效,而在命中和冒泡阶段生效.它的默认值通常是false.
  如果想要一个监听器能够在事件流转的所有阶段生效,就必须调用addEventListener两次,一次设置use_capture为true,另一次设置use_capture为false.
  priority参数指优先级,优先级高的监听器会被首先执行,如果多个监听器的优先级相同或者都没设置优先级,则按照它们的添加顺序来执行.它的默认值是0,可以设置为正数或者负数.
  当抛出事件的目标对象不在显示列表中时,事件是不会经过三个阶段的,比如派发给Socket类的事件,就只有命中阶段,而没有捕获或者冒泡阶段.
  事件对象拥有两个属性:target和currentTarget.target是抛出事件的目标对象,而currentTarget是事件流当前的停留对象--即对此事件注册监听的对象.
  stopPropagation()和stopImmediatePropagation()的区别在于,stopPropagation()
不会阻止当前节点的其他监听器执行,而stopImmediatePropagation()会阻止当前节点的其他监听器执行.两者都阻止了事件流向下一个节点.