找回密码
 注册
搜索
热搜: java php web
查看: 867|回复: 2

ActionScript中的事件处理方法

[复制链接]
发表于 2009-1-25 18:52:20 | 显示全部楼层 |阅读模式
这是学习过程中的一些总结,欢迎大家指正。
ActionScript 3.0 之前的 ActionScript 版本中提供许多不同的方法来处理事件:

1.on() 事件处理函数,可以直接放在 Button 和 MovieClip 实例上
2.onClipEvent() 处理函数,可以直接放在 MovieClip 实例上
3.回调函数属性,例如 XML.onload 和 Camera.onActivity
4.使用 addListener() 方法注册的事件侦听器
5.部分实现了 DOM 事件模型的 UIEventDispatcher 类
其中的每一种机制都有其自己的若干优点和局限性。on() 和 onClipEvent() 处理函数易于使用,但使随后对项目的维护变得较为困难,因为很难查找直接放在按钮和影片剪辑上的代码。回调函数也很容易实现,但对于任何指定事件,仅限于使用一个回调函数。事件侦听器较难实现:它们不但要求创建侦听器对象和函数,而且要求向生成事件的对象注册侦听器。这虽然增加了开销,但您可以创建若干侦听器对象,并针对同一个事件注册这些对象。

对 ActionScript 2.0 组件的开发形成了另一个事件模型。该新模型包含在 UIEventDispatcher 类中,并且基于 DOM 事件规范的子集。熟悉组件事件处理的开发人员将会发现过渡到新的 ActionScript 3.0 事件模型相对来说较为容易。

遗憾的是,各个事件模型使用的语法以不同的方式相互重叠,并且在其它方面各自不同。例如,在 ActionScript 2.0 中,某些属性(例如 TextField.onChanged)可用作回调函数或事件侦听器。但是,根据您是否在使用支持侦听器或六个类之一的 UIEventDispatcher 类,用于注册侦听器对象的语法有所不同。对于 Key、Mouse、MovieClipLoader、Selection、Stage 和 TextField 类;请使用 addListener() 方法,但对于组件事件处理,请使用名为 addEventListener() 的方法。

不同事件处理模型所导致的另一个复杂性是:根据所使用的机制的不同,事件处理函数的范围大不相同。也就是说,关键字 this 的含义在各个事件处理系统中并不一致。
发表于 2009-1-25 19:41:48 | 显示全部楼层
恩,这个思路很好的!
回复

使用道具 举报

发表于 2009-1-25 19:16:41 | 显示全部楼层
好贴,学习了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|软晨网(RuanChen.com)

GMT+8, 2024-11-26 02:29

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表