题外话:
不少兄弟问我,AS3教程咋不出了哩?其实看我博客的兄弟们应该都知道,黑羽目前的Flash RIA整体网站,接近竣工,11月即将推出。结尾工作实在太多,从十一到上周末,基本上放假都在加班。一些博客或者论坛上兄弟的问题都没有精力回复,抱歉了。
上次还在5d上看到版主鼓动大家给我打气,让我继续,真是非常不好意思。
这个周末偶得空闲,遂集中精力,将自己开发笔记整理了一篇放上来。项目发布后,更新会正常。
彻底了解AS3视觉元件架构
DisplayObject,直译为视觉对象,意为可以被看到的对象。
视觉是Flash 成功的主要基石。当我赏析ActionScript 3 的所有视觉元件类型和其整体构架时,感到非常满意。可以看出,这次整体的架构设计是深思熟虑的结果。与其他语言,比如C#,相比有自己强烈的特色,是对Flash视觉行为贴身定做的结果。
ActionScript 3的架构乍一看很复杂,不包括UIComponent的子类,就有7到8个层,20多个莫名奇妙的类。头疼!但实际上,它的设计是非常的简洁优雅,远远比ActionScript 2一个MovieClip打天下强太多了。实际上,只要真正弄清了它的设计思路,就可以高屋建瓴,一览无余,会发现这个架构逻辑清晰,非常的易懂易记。所以,先抛开ActionScript 3 的帮助文件,我们一起来看看为什么要设计这样一个架构,搞出20多个怪胎出来。
先来追忆一把ActionScript 2中无所不能的先贤: MovieClip(影片剪辑)。 这位兄台无所不能:可在其中画矢量图,可在其中贴位图;可在其中做影片,也可嵌套子影片;偶尔用来加载,闲来客串按钮;三教九流皆可放,肚皮天下第一广。它的父亲何人,原来是元始天尊Object。
这样的玩意儿,新手用起来很爽,大大节约了脑细胞。但任何一个有过大型OOP项目经验的老手,都会毫不犹豫的指出,这样的架构设计是失败和混乱的。代价是巨大的。MovieClip类公开的属性和方法共有一百多个(自己数数)!居然直接继承根类!居然拥有这样多公开(public)属性和功能的类!居然应用范围如此广泛!
首当其冲,其第一弱点就是系统资源的浪费。
举个例子, 我新建一个空MovieClip A,只是想让它做个容器,好在里面放几个有内容子MC。这样我操作A的位置和渐变时,子MC会统一变化。这样的经验大家都有吧。可就是这么一个简单的纯容器A,ActionScript 2&1都会毫不犹豫的把MovieClip所有的属性和方法都赋给A。谁让A是MovieClip类的实例呢?可在这个应用上,我们要A的其他90多个功能干什么呢?而且还不算最耗资源的内建的对Timeline的支持!大家想想,我们每天都在创建MC。但事实上我们做开发时,创建的MC有多少用到了大部分的功能和Timeline?只有一部分的通过Flash创建的MovieClip才需要时间轴的支持,其余大部分根本不需要时间轴支持。这样的设计是不是有问题呢?
痛批了一顿ActionScript 3之前的MC后,我们不得不说几句公道话:这样的错误是有其历史局限性的,我们不能苛求古人。且看现在的视觉元件架构,那叫一个爽。爽,就爽在系统设计师对整个Flash视觉系统的抽象上。抽象和解构的功力很深!不得不佩服!系统各个超类和子类的设计划分,职责清晰,稳健高效,堪称优雅!我看.Net FrameWork 的System.Drawing架构设计时都没有这个感觉。毕竟Flash是靠视觉起家,与视觉动画交互打交道最深阿。
下面来欣赏ActionScript 3 的元件架构。
ActionScript 3 中所有可以被看到的视觉元件都统一于DisplayObject,即其子类的实例。DisplayObject是一个抽象类,不能生成实例。从系统架构设计上来说,这样的超类设计是常识。DisplayObject,我在
[url=http://www.kingda.org/archives/kingda/2006/07/as305.html]
AS3.0教程(5):强大的事件机制(1)
[/url]
中讲过,继承于EventDispatcher类,也就意味着所有的DisplayObject子类都可以发送事件了。
啊哈,DisplayObject下面一层的抽象就精彩了,架构设计师的原意是将所有视觉元件分为两大类:可以接受人机交互事件的,和不可以接受人机交互事件的。所以就有了InteractiveObject类和非InteractiveObject类之分。由于非InteractiveObject的几个类之间差别太大,也抽象不出什么共同点,所以,干脆就分成了InteractiveObject的六个同级兄弟 AVM1Movie, Bitmap, MorphShape, Shape, StaticText, Video。但黑羽认为从系统的优雅性出发,不妨就设一个UnInteractiveObject的超类,将这六个孩子放在这个超类的下面。还便于日后的功能扩展。
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1785.html
发表评论
-
AS3生成单独“双击事件”
2010-04-10 12:06 819AS3虽然提供了双击事件,但在触发双击事件之前会触发一个单击 ... -
AS3生成单独“双击事件”
2010-04-10 12:06 705AS3虽然提供了双击事件,但在触发双击事件之前会触发一个单击 ... -
FMS多人连机教程:[一] 初步认识SharedObject
2010-04-10 12:06 584最近事不多,比较轻快. ... -
FMS多人连机教程:[一] 初步认识SharedObject
2010-04-10 12:06 685最近事不多,比较轻快. ... -
FMS多人连机教程:[二] 做个简单的用户注册
2010-04-10 12:05 702因为这几天要出去办点事,不能上网了.所以今天就熬夜写了个教程 ... -
AS3与XML 的结合
2010-04-09 13:35 588[1b]ActionScript 3.0系列教程(4):爽快 ... -
AS3与XML 的结合
2010-04-09 13:35 638[1b]ActionScript 3.0系列教程(4):爽快 ... -
AS3.0教程-视觉元件精要
2010-04-09 13:34 571题外话: 不少兄弟问我 ... -
AS3的Sound类
2010-04-09 13:34 903Title:Class Sound 标题:Sound类 前半部 ... -
flash游戏基本操作:上下左右的移动
2010-04-09 10:40 1570发一个按键无按钮的,按下的时候不进行帧的检测,省资源,AS3 ... -
Flash Physics Engine Box2DFlashAS3
2010-04-09 10:40 784又一个AS3 2D Physics Engine,它基于C++ ... -
Flash Physics Engine Box2DFlashAS3
2010-04-09 10:40 661又一个AS3 2D Physics Engine,它基于C++ ... -
Flex: Animated Skins
2010-04-09 10:39 716Tink 写了一个动画皮肤的例子,很好玩。几个截图: 禁用的时 ... -
Flex: Animated Skins
2010-04-09 10:39 628Tink 写了一个动画皮肤的例子,很好玩。几个截图: 禁用的时 ... -
《漫步》flash动画制作全记录五
2010-04-08 10:58 679场景五的黄昏场景是一 ... -
《漫步》flash动画制作全记录五
2010-04-08 10:57 451场景五的黄昏场景是一 ... -
《漫步》flash动画制作全记录六
2010-04-08 10:57 746没想到写制作记录会这么复杂,制作那些图片真花时间,呵呵,不过终 ... -
《漫步》flash动画制作全记录六
2010-04-08 10:57 657没想到写制作记录会这么复杂,制作那些图片真花时间,呵呵,不过终 ... -
flash动画形变讨论二:低头
2010-04-08 09:10 514上次说了基本的形变,现在说下提示点,提示点是控制图形变化的基本 ... -
卡通娃娃360度转身动画
2010-04-08 09:10 485超人表情原创大赛正如火如荼的进行中,对于初哥可能就望钱兴叹了, ...
相关推荐
全球娱乐及媒体行业展望:2021-2025年精要.pdf
江恩金字塔-九方图精要,可能有用,自己看吧!!!
江恩金字塔-九方图精要英文版,在阳光飞狐社区有原稿
matlab 精要 编程及高级应用 pdf格式 教程 本书分为三篇。从matlab的基本功能讲起,与具体应用相结合,如信号处理,控制系统设计分析,符号数学,系统仿真等。本书主要读者对象为广大的科技工作者和理工科大学的...
参考资料-中国书法精要.zip
物流管理-绿色物流精要.ppt
国人写的关于Delphi相当不错的入门级别的书籍,真正理解、吸收了,就可以进阶Delphi高手了
剑指大数据——Flink学习精要(Java版) 7M大文件,全方位讲述Flink
第一章 瞭解 Java 第二章 入門準備 第三章 語法入門 第四章 瞭解 Java 第五章 陣列 第六章 字串 第七章 封裝(Encapsulation) 第八章 繼承(Inheritance)、多型(Polymorphism) 第九章 管理類別檔案 ...
推荐随着数字信号处理技术的迅速发展以及数字信号处理器件性能的全面提高,实际系统对高速数据转换器的要求也越来越高。例如,在移动通讯基站设计中,高速数据转换器不仅要有很高的转换速度,而且还需要对高频信号...
学习python的绝佳好资源,93页纯干货,内含大量实例源码及其运行结果图,python精要参考,让你对各类知识点一目了然,你值得拥有!
第二章 企业社会责任 2第三章 企业道德推理 12第四章 市场营销中的伦理问题 21第五章 人力资源管理中的伦理问题 25第七章 环境保护中的伦理问题 31第八
wpf学习用书籍,大胡子的教程,总结了wpf的精要, 入门教程,值得一看
PDF电子书--Delphi精要
高校教师资格考试《高等教育学》复习大纲-已整理-考试精要.pdf
《剑指大数据——Flink学习精要(Java版)》(最终修订版).pdf
PMBOK2008-项目管理PMP精要
作为新一代的开源流处理器,Flink是众多大数据处理框架中一颗冉冉升起的新星。它以同一种技术支持流处理和批处理,并能同时满足高吞吐、低延迟和容错的需求。本书由Flink项目核心成员执笔,系统阐释Flink的适用场景...
2022年市场-互联网视频营销精要.pptx
CHM电子书--PASCAL精要