前言:我刚接触Flash的时候是Flash6末期,国内的Flash Web(也就是Flash网站)还是很少的,牛X的更是屈指可数,而且这个时候所谓的牛X,一般都是指效果很酷,技术强的基本没有。早期的Flash web开发者大都是由Flash动画制作者或是网页设计师转变而来。他们非常热衷于片头和过渡效果,为此不惜牺牲浏览者的等待时间并吃掉浏览者的CPU,所以好多人一谈起Flash web就觉得它体积大,效率低。当然如果是个人网站,信息量小,大多都是一次性浏览的网站,酷眩的效果可以让人过目不忘,这是普通HTML网页所不能企及的。
后来MM公司对Flash的连续两次升级都把重点放在了AS上,AS内置类快速膨胀,功能急速扩展,AS2.0更是趋向标准的面向对象语言。这时候一大批程序员又被吸引进来了,尤其是那些有C或者JAVA背景的牛人们。可惜他们总喜欢用程序员的思维去评判Flash web,甚至用软件开发的标准去往Flash web开发上硬套,结果肯定是失望,很多人武断的就把责任推给了Flash:“Flash web结构混乱,基于时间轴的AS写法奇怪,Flash web不适合大规模的商业应用开发!”。就这样Flash web的前途被宣判了死刑。
于是造成现在一个非常有意思的现象:很多以前动画很牛的前辈们,都去职业搞动画片制作了,并为Flash动画的产业化和商业化勇敢探索着,有些已经取得了辉煌成就;而Flash7之后进来的程序牛人们,直接从事Flash游戏开发和Flash RIA应用开发了,他们更习惯基于事件的编程和面向对象的开发模式,时间轴对他们的意义已经不再重要。这样以来Flash web开发成为一个中间断档带,也是人才最稀缺的地带。很多目前从事Flash web开发的人员应该都是从HTML网页制作人员简单学了一些Flash后过渡过来的,他们即非动画高手也非程序高手,更多的是网页设计高手。然而这些设计高手又总爱拿Flash跟PS比,结果Flash web开发还是没得到好的口碑。
我从最开始学习Flash就是以做网站为目的,这两年多来,我所学的一切都是以Flash web开发和应用为核心,我几乎尝试了所有常见的Flash web结构形式,我时时刻刻的都在考虑如何在保存Flash优势的情况下,又能开发出有实际应用价值的高效率的商业作品,最终将Flash web开发模式化,快速化。
那么Flash web的优势在那里呢?对于展示性的网站,当然是Flash酷眩的效果,这点已经被大多数人所共识。但对于包含大量信息,需要经常更新的Flash web,它的最大优势就不再可能是效果,因为Flash的效率实在不敢恭维,大量的效果会影响人们对信息的查询效率,现在网络带宽也不容乐观,大量的动画必将造成SWF体积膨胀,影响浏览速度。那么大中型信息类Flash web的优势到底是什么呢?在笔者看来,最大优势只有两点而已,一是界面布局灵活,二是数据的无刷新更新。还记得我们以前在DW中拉表格的痛苦吗?还会为了网站布局工整写一堆CSS和JS吗?还用得着每次更新数据就打开一个新页面吗?Flash web的两大优势使这些历史的痛苦都成为了过去。而且,这两点如果处理恰当的话,就已经足够给普通的浏览者带来全新的用户体验了。
我这两年来一直也都是处在学习和探索阶段,还不是真正的理论研究阶段,两年时间太短了!我的很多想法和理论还很不成熟,甚至是幼稚的。我现在拿出来和大家分享,不求说服谁或者证明什么,只求能给大家一些启发,同时自己也好好总结一下。下面就粗浅的谈谈我目前对Flash web尤其是Flash web结构的认识吧。
Flash web结构概述
现在的Flash web真是百花齐放,形形色色的Flash web使人应接不暇。自由灵活是Flash web的生命力所在,但这也正Flash web商业化的主要瓶颈之一。商业最看重的是效率,而无规则便无效率可言。那么Flash web是不是真的就一点规律都没有呢?非也!纵观现在所有的Flash web(Flash RIA应用程序除外,比如Flash涂鸦板、地图等等),不管它们技术怎么牛,效果怎么酷眩,都不能逃脱以下四层结构:
1动画层(Movie)
2背景层(Background)
3数据显示层(Display)
4数据层(Data)
这些概念其实都不新颖,看到这些我自创的名词,一些有经验的开发者们肯定立刻都能猜出一二来。为了以后论述方便,简称MBDD式。
我以下的所有讨论都将紧紧围绕这四层结构进行,因为在我看来,Flash web的灵魂就是它的结构,一个Flash web的技术含量不是看它某些特效多眩,更不是看这个WEB中有个什么新颖的、牛X的技术应用,关键是要看它通过什么手段有效的把各种元素统一起来的!
最后我要提前说明的一点是,MBDD式是对所有Flash web的概述,很多Flash web根据其功能不同可能缺失其中某些层,后面的文章我会继续仔细讲解。