[AS3]关于AS3.0事件Event类属性的全面介绍(2)
eventPhase 属性
您可以通过调查任何事件对象的 eventPhase 属性来确定事件阶段。eventPhase 属性包含一个无符号整数值,该值代表三个事件流阶段中的一个阶段。Flash Player API 定义了单独的 EventPhase 类,该类包含三个对应于三个无符号整数值的常量,如以下摘录代码中所示:
- package flash.events
- {
- public final class EventPhase
- {
- public static const CAPTURING_PHASE:uint = 1;
- public static const AT_TARGET:uint = 2;
- public static const BUBBLING_PHASE:uint = 3;
- }
- }
这些常数对应于 eventPhase 属性的三个有效值。使用这些常数可以使您的代码可读性更好。例如,如果要确保仅当事件目标在目标阶段中时才调用名为 myFunc() 的函数,您可以使用以下代码来测试此条件:
- if (event.eventPhase == EventPhase.AT_TARGET)
- {
- myFunc(); //极酷播放器提示:测试函数
- }
target 属性
target 属性包含对作为事件目标的对象的引用。在某些情况下,这很简单,例如当麦克风变为活动状态时,事件对象的目标是 Microphone 对象。但是,如果目标在显示列表中,则必须考虑显示列表层次结构。例如,如果用户在包括重叠的显示列表对象的某一点输入一个鼠标单击,则 Flash Player 始终会选择距离舞台层次最深的对象作为事件目标。
对于复杂的 SWF 文件,特别是那些通常使用更小的子对象来修饰按钮的 SWF 文件,target 属性可能并不常用,因为它通常指向按钮的子对象,而不是按钮。在这些情况下,常见的做法是将事件侦听器添加到按钮并使用 currentTarget 属性,因为该属性指向按钮,而target 属性可能指向按钮的子对象。
currentTarget 属性
currentTarget 属性包含对当前正在处理事件对象的对象的引用。您并不知道哪个节点当前正在处理您要检查的事件对象,虽然这似乎很奇怪,但请记住,您可以向该事件对象的事件流中的任何显示对象添加侦听器函数,并且可以将侦听器函数放在任何位置。而且,可以将相同的侦听器函数添加到不同的显示对象。随着项目大小和复杂性的增加, currentTarget属性会变得越来越有用。
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例