Actionscript 3.0 事件机制剖析---事件发送方式(一)
来源:互联网 发布:world网络用语什么意思 编辑:程序博客网 时间:2024/03/29 15:02
Actionscript 3.0 事件机制剖析
事件发送方式(一)
声明:欢迎任何人和组织转载本blog中文章,但必须标记文章原始链接和作者信息。
本文链接:http://blog.csdn.net/li_007/archive/2009/03/02/3949445.aspx
开拓进取的小乌龟------->CSDN点滴点点滴滴Blog
在前面的文章中解释了Actionscript 3中的事件机制的几个步骤,也给出了一个自定义的事件的例子。但是在事件类定义后怎么发送事件呢?这是一个值得大家思考的问题,因为事件的发送关系到事件的监听。下面对这句话多说几句。
前面文章已经说了,在Actionscript 3中要区分Event和Event Flow,Event事件是直接将事件发送到target,中间没有Event Flow的Capture phases、Target Phases和Bubbling Phases三个阶段(在后面的blog中我会讲到Event Flow,在下面文章中提到的Event都是普通的Event,不牵涉到Display List,也就不牵涉到Event Flow),所以这样的话,肯定是谁发送事件,谁就负责监听事件。
在Actionscript 3中Event Class是负责提供各种事件,比如Error,ADD ,etc.来给EventDispatcher class对象来使用,故要想实现事件的发送,就必须用到EventDispatcher class或者它的子类,而EventDispatcher class是实现了IEventDispather Interface。所以这样我们可以有三种实现事件发送的方法:继承EventDispatcher class、复合EventDispatcher 对象以及实现IEventDispatcher Interface。
下面将上一篇blog中的事件发送方式改为继承EventDispatcher class的方法:
1、AlarmEvent.as文件中定义的 Alarm Event class不做任何改变。
2、增加AlarmDispatcher.as来定义继承自EventDispatcher class的子类AlarmDispatcher class,代码实现如下:
3、修改TestEvent class中的OnTimerClock方法如下:
当然针对TIMER_ALARM的监听也应该由AlarmDispatcher Class的实例对象来监听了,不然就无法收到事件。
对比这种方式和先前没修改之前的方式有什么不一样呢?其实是一样的,先前本来就是继承EventDispatcher class来发送事件的。原因是:所有的Actionscript 3的显示对象都是DisplayObject或者其子类的实例,而DisplayObject又是事件发送类EventDispatcher的子类,因此所有的显示对象都可以发送事件了。在本例中TestEvent继承了文档类Sprite,显然Sprite也是显示对象,也当然就继承了EventDispatcher的方法,也就可以直接this.dispatcherEvent(...)了。
- Actionscript 3.0 事件机制剖析---事件发送方式(一)
- Actionscript 3.0 事件机制剖析---事件发送方式(二)
- Actionscript 3.0 事件机制剖析---事件发送方式(三)
- Actionscript 3.0 事件机制剖析(一)
- Actionscript 3.0 事件机制剖析--自定义事件实现
- Actionscript 3.0 事件机制剖析--The Event Flow
- flex 事件机制-基于Actionscript 3.0
- ActionScript事件模型实现机制
- 从源码角度剖析Android事件分发机制(一)
- flash RIA>ActionScript 3>谈谈事件机制
- 数据传递型情景下事件机制与消息机制的架构设计剖析(一)
- jQuery 事件机制(一)
- JAVA事件机制(一)
- 事件分发机制(一)
- JSF事件机制(一)
- 事件分发机制深入剖析
- Flex事件机制一
- Flex事件机制(一)
- SQL Server 2008中的日期数据类型
- 收藏家蔡铭超拍得圆明园鼠兔首 称不会付款
- 服务器无法启动的三种解决办法
- C99标准更新
- Spring详解----个人笔记
- Actionscript 3.0 事件机制剖析---事件发送方式(一)
- 在.Net开发中几个重要的认识误区
- VSTS 单元测试备忘
- 贴心软件中国行—逐浪CMS技术团队京津行与您面对面
- spring整合hibernate实现声明式事物---个人笔记
- Flex Timer使用方法
- poj1273Drainage Ditches
- vs2008中Ajax错误:Sys未定义
- c++中的单例模式