Flex分享:Event事件机制

FLEX事件机制包括:注册事件、触发事件、事件的传递

1、事件注册
    1.1 直接指定给函数事件:
    <mx:Button id="btnA" label="不传递事件对象的点击" click="onClickA()" />
    <mx:Button id="btnB" label="传递对象的点击" click="onClickB(event)">
    1.2 使用AS的addEventListener()完成MXML组件的事件注册:
    btnB.addEventListener(MouseEvent.CLICK,onClickB);
    
    事件被注册(或者说被添加了侦听器)后,当该事件发生时, 就会调用注册的事件响应函数。

2、事件触发
     注册到对象上的事件发生时,就是事件的触发。事件触发后会调用注册在该事件上的事件响应函数,同时创建事件对象的一个实例,该实例会包含事件的信息。比如对事件click的触发,就是当用户使用鼠标点击注册了click事件的对象。
    事件触发后,一般经历3个阶段:
    2.1 捕获阶段:
    FLEX应用是一层一层的关系,比如Application里有一个容器Canvas,而Canvas里有一个VBox,真正发生事件的是VBox里的一个按钮。当用户点击这个按钮时,实际上该事件会经历3个对象,第一个是Application,第2个是Canvas,第3个是VBox,最后才是事件注册的对象按钮。那么click事件自上而下地进行查找点击对象的工作,这个过程就是捕获阶段。
    2.2 目标锁定阶段
    当自上而下找到事件注册并触发的对象时,FLEX将会自动创建一个Event的实例,这个实例包含着整个事件的相关信息。
    2.3 冒泡阶段 
    与前面捕获阶段相反,冒泡阶段就是事件会向上一级传递。

3、事件传递(关键)
    3.1 target和currentTarget的区别:
    target:记录事件的源头
    currentTarget:记录事件当前传递到的对象
    3.2 阻止事件冒泡主要有两个方法:
    stopPropogation()和stopImmediateProogation(),当调用任何一个方法的时候,事件的冒泡就会被阻止,事件流将不会向上层传递。
    如果当前对象上注册了多个事件,则使用stopPropogation(),因为并不希望当前对象上的其他事件还没执行就被中止。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章