文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院媒体动画FlashFlash AS3.0 强大的事件机制
精品推荐
特别推荐
·FLASH基础的一些心得体会
·推荐:不间断滚动显示图片的代码
·全面升级您的Flash播放器
·由浅入深学习Flash制作高射炮游戏
·由浅入深学习Flash制作高射炮游戏(续)
·遮照及文字遮照的几个概念和事例
·创建一个实用Flash站点的十大技巧
·Flash动画制作实例:小野人玩摇滚
·Flash技术在电子杂志设计制作应用
·用js+flash实现网页中复制数据功能
热点TOP10
·由浅入深学习Flash制作高射炮游戏
·Flash AS基础精典教程
·Flash如何制作灯光效果
·日本动画制作幕后完全流程揭秘
·Flash制作烟花效果动画
·Flash 图片轮换效果
·以Flash动画作网站引导页面是不是真的需要呢?
·Flash制作漂亮的三重卷动相册特效动画
·用FLASH遮罩效果做图片切换效果
·Flash制作环型立体旋转的动态文字

Flash AS3.0 强大的事件机制

日期:2008年6月24日 作者: 查看:[大字体 中字体 小字体]


ActionScript 3.0系列教程(5):强大的事件机制

回顾和比较

AS1.0玩家最爱用onClipEvent(), on(),又方便又直接。缺点在于逻辑分散到了各个舞台元件中,难以管理和维护。更加别说代码重用了。别跟俺说可以Copy, Paste,这不叫重用,这叫低级。

AS2.0中,增加了一些事件处理机制:

(1)回调函数: onLoad, onComplete等。相信兄弟们最熟悉的应该就是XML.onload回调函数了。

(2)事件侦听器型:
这个就是addListener(), addEventListener()这种类型的。发送事件有的是内置,有的通过dispatchEvent().
嗯,这种事件机制基本上就和AS3.0很像了。自从使用了ActionScript 2.0来开发项目,黑羽就尽可能的多用这种事件处理机制。这个习惯很好,基本上让黑羽对3.0的机制很快适应过来。

说道这里,黑羽要多扯几句2.0,抱怨一下它的不足,再让大家看看AS3.0的光明大道:

(1)2.0中除了UIComponent能自己发送事件,绝大部分类不能自己发送事件的,比如MovieClip, 或者一些自定义的类。黑羽还制作了一个EventSender的事件发送类来解决。
当然你可以通过扩展来解决MovieClip这些类来解决,但是在一些轻量级或者特殊运用中,还是用黑羽这个EventSender类更加方便。
比如说,你突然需要舞台上某个A_mc的运行到第20帧时发送一个"finished"事件出来,并且希望另外某个B_mc能够捕捉到这个事件,那么用一般的扩展方法不知道有多么麻烦!
(1、要重做一个带有事件发送功能的类和A_mc通过某种方式绑定。2、同时确保在B_mc中要能访问到发送事件的对象并addEventListenr)。
而用俺的EventSender类非常简单,A_mc中写 EventSender.send("finished", this), B_mc中写EventSender.addListener("finished", listenerFunc),并可以通过event.target属性直接定位A_mc,真是简单的不能再简单了。(请尽量以正规方法为主,不推荐频繁使用,不是好的编程习惯)

(2)2.0中,侦听器的记忆是"有毛病"的。如果是新手,会经常觉得侦听器函数的this关键字指向飘忽不定,常常弄错。而且看看高手的代码,一会儿是Object做侦听器,一会儿是function做侦听器,真是让人头痛。其实MacroMedia也很头痛,所以就出了Delegate这个官方类(补丁?)来解决这些问题。

(3)侦听器注册方式也有两种,一种是addListener(),如Key,一种是addEventListener(),如UIComponent类。为什么要这样搞两种?MacroMedia无辜的望着我,喃喃道偶也不完全清楚。

超人来了,那就是ActionScript 3.0事件处理机制:

(1)统一。全部一色用addEventListener().

(2)所有的可视对象都可以接受和发送事件。
AS3.0的类继承设计是深思熟虑的,所有的可视对象所属类都是DisplayObject的子类, DisplayObject又是EventDispatcher的子类。因此它们就都可以玩Event了,所以说,有个好的老子就是好啊。
而且有了崭新的事件冒泡机制,可以使事件层层上递到最上层的Stage,绝好的功能!
有了以上两点:黑羽的EventSender类也可以歇菜了。

(3)侦听器统一使用Function,不再使用Object了。 同时this关键字的记忆力“大大增强”,Delegate类也可以下岗了。

Event涉及到的内容极多,面很广。下面黑羽将从以下几个方面讲起:

一、如何接收事件?如何做到AS3.0的标准事件编程。

二、如何发送自定义事件?如何在OOP中正确使用AS3.0强大灵活的事件架构。
三种方式及其优劣,以及在何种情况下使用。

  • 用继承EventDispatcher实现
  • 用复合EventDispatcher实例来实现。
  • 用接口IEventDispatcher实现

三、如何使用冒泡机制(即官方所称的Event Flow机制)?以及冒泡机制的原理。

四、Event的其他高级应用。

其实到目前为止,我的3.0开发学习笔记已经有3万字左右的东西了,但都是些纲要和代码,整理成文,尤其是用比较有条理和易懂的方式写出来会比较慢。况且开发中的代码是随手拈来,但写教程的代码往往要经过一些改写,使得重点更突出。所以如果更新有点慢,请耐心一些,呵呵。

如何接收事件?如何做到AS3.0的标准事件编程?

Event改变的部分很多,这两天有空时,黑羽就在想怎样用一个有条理的方式来讲解Event和它相关的诸多内容,让我们感到比较容易理解,记忆和接受。
我准备这样来讲解:

先给个接受事件的代码例子。在例子中,指出:

  • Event对象发生了什么变化
  • addEventListener语法的不同,原因,和const型必要性和用法
  • Listener和As2.0有何不同,和this关键字的“改进了的记忆力”

黑羽一贯的风格,先来一个例子。我很想给个短一点的代码例子,但是要达到清楚,全面和标准的示范,我还是决定采用这个Document Class的示例。我会在每个代码段注一些注释,大家不明白的地方回贴说一下,我会尽量解答。

Document Class的含义和相关用法并不难,忘了的兄弟看我第3篇教程:

[1] [2] [3] [4] 下一页 




上一篇:Flash AS3.0 爽快使用XML

下一篇:为动态创建MovieClip指定鼠标事件

相关文章:
·由浅入深学习Flash制作高射炮游戏
·Flash AS基础精典教程
·QQ空间4.0 透明Flash_500个
·Flash如何制作灯光效果
·QQ空间透明flash代码
·QQ空间日志可用透明FLASH
·新收集200多种美化QQ空间的透明Flash
·Flash制作烟花效果动画
·教你如何制作QQ空间FLASH导航条
·QQ空间:Flash经典20问
相关软件:
·孙鑫VC++从入门到精通开发详解视频教程FLASH版
·Flash MX 从入门到精通
·《flash制作高级教程》
·Flash MX 动画制作实例教程
·车臣之鉴: 俄罗斯恐怖事件根源及教训
·公司企业网站管理系统模板功能强大版
·Flash教程
·Flash MX 教程与实例精选
·FLASH 8中文使用手册
·闪魂——Flash网站建设实录

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot