如今的Flash已经远非五年前的网页动画这个含义了,纵观整个万维网的Web,到处都充斥着Flash的应用:Flash广告、Flash游戏、Flash富客户端的网页、Flash相册、Flash动画。
伴随着富客户端Web应用的兴起,Flash(Flex)首当其冲成为富客户端应用的领头羊,与之并列前行的还有Ajax技术,微软和Sun也紧跟其后分别推出Silverlight、JavaFX。相比之下,微软需要。net平台支持,sun需要java平台支持。而Flash只需要一个浏览器(实际上浏览器还需要安装flash插件)即可。运行环境的优势很明显flash占了上风。
与老牌的Ajax技术相比,Flash更擅长UI、更安全,更好的浏览器兼容性,并且可以与JavaScript交互。相比脚本语言的功能,ActionScript要比JavaScript脚本的功能强悍很多。但Javascript出现太久了,是Web脚本语言的标准,和Flash比较,谁也替代不了谁,因为HTML不会消失!
Flash先入为主,推出Flex,更是培养了一大批开发人员,可以说Flex技术已经很成熟了,应用会越来越多。
伴随着Flash的强大,另一个编程阵营正在崛起,就是一Flex和ActionScript的应用越来越多,这必将引起Web应用开发格局的变动,很难说将来的Web富客户端应用将是Flash的天下,能否成为现实就看Adobe的发展策略了,工具、培训、引用推广等等。
Flash的强大如今已经撼动了J2EE和ASP.NET以及所有的Web应用前台技术。下面就来全面认识Flash的技术吧,一下文章内容来自对互联网文章的理解摘录基础上形成的,目的是为了对flash技术有个全面认识,对Flash技术的理解,我也是个新手,有不妥不对的地方,还希望各位读者能指正。
FLASH原理概念
首先FLASH是一种基于矢量图形的交互式多媒体技术,本身是从Future Splash发展起来的。后被Macromedia公司收购并继续发展其制作动画丰富多采,富于变化性并且相对于其他作图软件文件较小,在网页中无须等它下载完毕就可以显示出来并以流的形式播放,唯一的缺点是需要特定的浏览器插件来支持,目前所有的浏览器都支持Flash,或者说都可以安装Flash的播放器插件。
Flash包括运行时(虚拟机或者叫播放器),播放文件(SWF),商标,创作工具等诸多意思,ActionScript系FlashPlayer中可以使用的编程语言,也是唯一的编程语言。现在的版本是AS3,性能较以前的AS2有很大提高,而且,语言本身抽象得更像一门编程语言。
FLASH中关键概念的介绍
1)矢量图形的认识:只是记录图形的大概轮廓,可以无限放大不失真,有别于我们熟悉的.bmp .GIF.JPEG等图形文件。
2)桢的概念:FRAME概念,FLASH动画是由一桢一桢的画面而组成的,并且在其中采用了关键桢技术keyframe的技术,在FLASH的时间轴上你可以很清楚的看到每一桢的分布情况,通过不同的颜色你可以区分出不同的桢,蓝色实块表示静止桢;蓝色空白桢表示空白桢;红色实桢表示移动的始发桢;绿色实桢表示变形的始发桢;相应的箭头标志表示Motion 以Shape两种动态形式。
3)符号Symbol的认识:在FLASH中符号是整个动画的基础部分,将编辑的对象作为符号,并且放入Library中,可以随时对他进行编辑,编辑后动画中相应部分也跟随变化,设计完成后,最终形成完整的动画,在FLASH中符号共分为三种形式:基本符号:Graphic;按钮:Button;剪贴画:Movie Clip;你在创建符号时系统会提示你选择符号的类型,其中Graphic是最普通的,是用于创建静态符号的,并且可以引用外部的图片来作为符号,Button是用于创建动态交互按钮的形式,既是在鼠标处于不同的位置产生不同的响应,Movie Clip是动态视频剪贴画符号,不同上面两种形式它有自己独立的时间轴,是动态的符号形式。可以通过Insert--> new Symbol来创建或是再创建是用F8来定义
4)层技术:层技术是在近期的图形处理软件中较常见的名词, 由于在动画中有多个对象需要处理编辑,为了便于处理控制各个对象出场顺序以及在时间轴上的停留时间用层技术便好的实现了这一目的,减少了编辑的出错机会。
5)库Library在FLASH中Library是用来存放符号的,可以通过Windows-->Library来实现对符号的调用,或是用它来调用外部的符号可以通过Open as symblo来将指定图片存入Library中
Flex、Flash、ActionScript、mxml四者的关系
Adobe Flash是强大的矢量动画编辑工具,在做动画起家之后,Flash一直在谋求rich internet application(ria富客户端)的霸主地位,最有影响的是,已经推出了面向对象的编程脚本ActionScript3.0,并且建立起类似于java swing的类库和相应component(组件)。
Flex是一个Flash应用程序开发包----Flex SDK,其中所有代码都是用AS3来编的。这个类似于Java的JDK,.net的FrameWork SDK,是一组开发工具和API的集合。
Flex面向专业的程序员,可以更加容易写出复杂应用程序,尤其是所谓企业业务的程序。
MXML是Flex中使用的一种文本标记语言,类似XML,Flex使用mxml来描述Flash界面元素给jsp/asp/php程序人员,程序员可以更加容易的处理Flash界面中的交互、事件和数据通讯等业务,而Flash的UI设计者之关心Flash的外观和组件的排列的等,从而将设计师和程序员职责划分出来,使整个团队更好的协作。
Flash偏向的是美工人员,所以更容易发挥特效处理的优势,Flex偏向开发人员,所以容易做出具有丰富交互功能的应用程序。
Flex是通过非Flash途径,解释.mxml文件组织components,并生成相应得.swf文件。
因此可以说,Flex是面向企业级的网络应用程序,Flash则面向诸如平面动画、广告设计等多媒体展示程序。
Flex与Flash公用ActionScript,但是使用的库并不完全相同,更合适的说法是两者使用着两套具有极大“功能重叠”范围的库。并且.mxml中允许使用ActionScript脚本。
Flash的编程模型是基于时间轴的,Flex的则是基于窗体,虽然它运行在网页里。
借助Flash Lite这一移动设备上的Flashplayer,Flash可以开发移动应用,Flex则不行。
不管是Flex还是Flash,最终的作品都是SWF的播放文件,只是制作这个文件的方式和过程有些差异。
Flash Media Server介紹
简单的来说,Flash Media Server是一个负责影音与资料交换的流伺服器,它具有下列几项功能:
可提供高度客製化的视讯会谈,小组会议,网路聊天室,讨论白板,即时投票等应用。
拥有丰富的人机介面,可以建立即时的视讯与资料应用程式。
提供可客製化的元件来建购即时的线上事件广播程式,例如线上客服元件等。
除了影音串流之外,还可以加入多人即时线上游戏与应用,做为加值服务的运用。
Flash Media Server有点像是我们在使用的Web Server是在Server上提供服务的应用程式,但是本质上却又不同。Web Server是提供HTTP的服务,但是Flash Media Server却是提供了RTMP的服务,这个RTMP是Real-Time Messaging Protocal的缩写,从字面上应该不难看出他的作用,RTMP不像HTTP的运作模式,必须要由要求(Request)与回应(Response)来构成沟通,RTMP与食用者之间的连线(Connection)是连续(或可称保持的)的,所以不需要特别的方法去维护session的资讯,当伺服器接受使用者连线时,这个连线就能用来交换影片、音乐和ActionScript的资料,直到将该连线给断除掉为止。
做为人机互动的介面,Flash Player可以将该工作执掌的非常好,它可以单独的运作,或是嵌入在网页中由浏览器来执行,所有的互动都会在Client完成,但是若要要资料的话就必须要像Flash Media Server来索取了,Flash Media Server没有所谓的人机介面,也不能自己直接初始化一个连线来连接影片,这个产生连线的过程,必须要藉由Flash Player来完成,简单的来说就是该连线是Flash Player与Flash Media Server的连线,而非Flash Media Server自己独立完成就可以了。
建立Flash Media Server的应用程式要透过两边来完成,一边是一般我们所熟之的ActionScript,一边是Flash Media Server也可以撰写程式语言,这个语言称之为SSAS,是Server-Side ActionScript的缩写,他的写法根一般的ActionScript非常的类似,只不过提供了一般ActionScript所没有提供的功能。
RTMP可以用来串流影音与资料,声音(Audio)的部份可以使用MP3与Nellymoser的格式,影片(Video)则可以使用FLV的格式,ActionScript资料的部分则採用AMF(Action Message Format)的格式。在一般的Media Server中大多使用UDP来传送影音资料,虽然UDP并没有TCP来的可靠,但是对于影音应用来说就算掉了一点资料也无所谓,因此UDP的特性反而成为他的优点,使用UDP将会让资料传输更快,在一般的状况下UDP的表现会比TCP要来的出色。
UDP可以被拿来执行广播或联合发送的动作,若是广播模式可以用的话,在大量使用者使用下将可以有效降低伺服器的Loading,不幸的有些ISP业者为了安全性的理由不会允许你这麽做,这时候就必须要使用联合发送的方式来达到广播的目的,联合发送的意思是指Server必须自己复制Stream,并分别的发送到各自的Client中,若是Client因为某些原因无法允许联合发送的Stream时,UDP media server将会改用TCP来做传送的动作。
RTMP提供了比一般串流媒体伺服器更多的功能,传递的Stream终将可以包含Video、Audio、ActionScript Data,RTMP将这些资料分开管理,当传送的是ActionScript Data时,任何的资料将不会被捨去(若是Video和Audio在频宽壅塞的时候可能会丢弃一些资料,一方面UDP也可以能是造成这个原因的凶手),因为若丢弃了某些资料,可能会造成应用程式上的困扰,例如资料验证等。就发送与处理的优先顺序而言,Audio的优先顺序是最高的,其次是ActionScript Data,最后才轮到Video。
Flash工具家族
Flash工具家族现在很庞大了。大体分三个:Flash、Flash Catalyst、Flesh Builder,分别称为FL、FC、FB。分别针对设计人员、交互人员、专业程序员。最终的成品就是SWF。
首先FLASH是一种基于矢量图形的交互式多媒体技术,本身是从Future Splash发展起来的。后被Macromedia公司收购并继续发展其制作动画丰富多采,富于变化性并且相对于其他作图软件文件较小,在网页中无须等它下载完毕就可以显示出来并以流的形式播放,唯一的缺点是需要特定的浏览器插件来支持,目前所有的浏览器都支持Flash,或者说都可以安装Flash的播放器插件。
Flash包括运行时(虚拟机或者叫播放器),播放文件(SWF),商标,创作工具等诸多意思,ActionScript系FlashPlayer中可以使用的编程语言,也是唯一的编程语言。现在的版本是AS3,性能较以前的AS2有很大提高,而且,语言本身抽象得更像一门编程语言。
FLASH中关键概念的介绍
1)矢量图形的认识:只是记录图形的大概轮廓,可以无限放大不失真,有别于我们熟悉的.bmp .GIF.JPEG等图形文件。
2)桢的概念:FRAME概念,FLASH动画是由一桢一桢的画面而组成的,并且在其中采用了关键桢技术keyframe的技术,在FLASH的时间轴上你可以很清楚的看到每一桢的分布情况,通过不同的颜色你可以区分出不同的桢,蓝色实块表示静止桢;蓝色空白桢表示空白桢;红色实桢表示移动的始发桢;绿色实桢表示变形的始发桢;相应的箭头标志表示Motion 以Shape两种动态形式。
3)符号Symbol的认识:在FLASH中符号是整个动画的基础部分,将编辑的对象作为符号,并且放入Library中,可以随时对他进行编辑,编辑后动画中相应部分也跟随变化,设计完成后,最终形成完整的动画,在FLASH中符号共分为三种形式:基本符号:Graphic;按钮:Button;剪贴画:Movie Clip;你在创建符号时系统会提示你选择符号的类型,其中Graphic是最普通的,是用于创建静态符号的,并且可以引用外部的图片来作为符号,Button是用于创建动态交互按钮的形式,既是在鼠标处于不同的位置产生不同的响应,Movie Clip是动态视频剪贴画符号,不同上面两种形式它有自己独立的时间轴,是动态的符号形式。可以通过Insert--> new Symbol来创建或是再创建是用F8来定义
4)层技术:层技术是在近期的图形处理软件中较常见的名词, 由于在动画中有多个对象需要处理编辑,为了便于处理控制各个对象出场顺序以及在时间轴上的停留时间用层技术便好的实现了这一目的,减少了编辑的出错机会。
5)库Library在FLASH中Library是用来存放符号的,可以通过Windows-->Library来实现对符号的调用,或是用它来调用外部的符号可以通过Open as symblo来将指定图片存入Library中
Flex、Flash、ActionScript、mxml四者的关系
Adobe Flash是强大的矢量动画编辑工具,在做动画起家之后,Flash一直在谋求rich internet application(ria富客户端)的霸主地位,最有影响的是,已经推出了面向对象的编程脚本ActionScript3.0,并且建立起类似于java swing的类库和相应component(组件)。
Flex是一个Flash应用程序开发包----Flex SDK,其中所有代码都是用AS3来编的。这个类似于Java的JDK,.net的FrameWork SDK,是一组开发工具和API的集合。
Flex面向专业的程序员,可以更加容易写出复杂应用程序,尤其是所谓企业业务的程序。
MXML是Flex中使用的一种文本标记语言,类似XML,Flex使用mxml来描述Flash界面元素给jsp/asp/php程序人员,程序员可以更加容易的处理Flash界面中的交互、事件和数据通讯等业务,而Flash的UI设计者之关心Flash的外观和组件的排列的等,从而将设计师和程序员职责划分出来,使整个团队更好的协作。
Flash偏向的是美工人员,所以更容易发挥特效处理的优势,Flex偏向开发人员,所以容易做出具有丰富交互功能的应用程序。
Flex是通过非Flash途径,解释.mxml文件组织components,并生成相应得.swf文件。
因此可以说,Flex是面向企业级的网络应用程序,Flash则面向诸如平面动画、广告设计等多媒体展示程序。
Flex与Flash公用ActionScript,但是使用的库并不完全相同,更合适的说法是两者使用着两套具有极大“功能重叠”范围的库。并且.mxml中允许使用ActionScript脚本。
Flash的编程模型是基于时间轴的,Flex的则是基于窗体,虽然它运行在网页里。
借助Flash Lite这一移动设备上的Flashplayer,Flash可以开发移动应用,Flex则不行。
不管是Flex还是Flash,最终的作品都是SWF的播放文件,只是制作这个文件的方式和过程有些差异。
Flash Media Server介紹
简单的来说,Flash Media Server是一个负责影音与资料交换的流伺服器,它具有下列几项功能:
可提供高度客製化的视讯会谈,小组会议,网路聊天室,讨论白板,即时投票等应用。
拥有丰富的人机介面,可以建立即时的视讯与资料应用程式。
提供可客製化的元件来建购即时的线上事件广播程式,例如线上客服元件等。
除了影音串流之外,还可以加入多人即时线上游戏与应用,做为加值服务的运用。
Flash Media Server有点像是我们在使用的Web Server是在Server上提供服务的应用程式,但是本质上却又不同。Web Server是提供HTTP的服务,但是Flash Media Server却是提供了RTMP的服务,这个RTMP是Real-Time Messaging Protocal的缩写,从字面上应该不难看出他的作用,RTMP不像HTTP的运作模式,必须要由要求(Request)与回应(Response)来构成沟通,RTMP与食用者之间的连线(Connection)是连续(或可称保持的)的,所以不需要特别的方法去维护session的资讯,当伺服器接受使用者连线时,这个连线就能用来交换影片、音乐和ActionScript的资料,直到将该连线给断除掉为止。
做为人机互动的介面,Flash Player可以将该工作执掌的非常好,它可以单独的运作,或是嵌入在网页中由浏览器来执行,所有的互动都会在Client完成,但是若要要资料的话就必须要像Flash Media Server来索取了,Flash Media Server没有所谓的人机介面,也不能自己直接初始化一个连线来连接影片,这个产生连线的过程,必须要藉由Flash Player来完成,简单的来说就是该连线是Flash Player与Flash Media Server的连线,而非Flash Media Server自己独立完成就可以了。
建立Flash Media Server的应用程式要透过两边来完成,一边是一般我们所熟之的ActionScript,一边是Flash Media Server也可以撰写程式语言,这个语言称之为SSAS,是Server-Side ActionScript的缩写,他的写法根一般的ActionScript非常的类似,只不过提供了一般ActionScript所没有提供的功能。
RTMP可以用来串流影音与资料,声音(Audio)的部份可以使用MP3与Nellymoser的格式,影片(Video)则可以使用FLV的格式,ActionScript资料的部分则採用AMF(Action Message Format)的格式。在一般的Media Server中大多使用UDP来传送影音资料,虽然UDP并没有TCP来的可靠,但是对于影音应用来说就算掉了一点资料也无所谓,因此UDP的特性反而成为他的优点,使用UDP将会让资料传输更快,在一般的状况下UDP的表现会比TCP要来的出色。
UDP可以被拿来执行广播或联合发送的动作,若是广播模式可以用的话,在大量使用者使用下将可以有效降低伺服器的Loading,不幸的有些ISP业者为了安全性的理由不会允许你这麽做,这时候就必须要使用联合发送的方式来达到广播的目的,联合发送的意思是指Server必须自己复制Stream,并分别的发送到各自的Client中,若是Client因为某些原因无法允许联合发送的Stream时,UDP media server将会改用TCP来做传送的动作。
RTMP提供了比一般串流媒体伺服器更多的功能,传递的Stream终将可以包含Video、Audio、ActionScript Data,RTMP将这些资料分开管理,当传送的是ActionScript Data时,任何的资料将不会被捨去(若是Video和Audio在频宽壅塞的时候可能会丢弃一些资料,一方面UDP也可以能是造成这个原因的凶手),因为若丢弃了某些资料,可能会造成应用程式上的困扰,例如资料验证等。就发送与处理的优先顺序而言,Audio的优先顺序是最高的,其次是ActionScript Data,最后才轮到Video。
Flash工具家族
Flash工具家族现在很庞大了。大体分三个:Flash、Flash Catalyst、Flesh Builder,分别称为FL、FC、FB。分别针对设计人员、交互人员、专业程序员。最终的成品就是SWF。
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/200604,如需转载请自行联系原作者