如今的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。
本文轉自 leizhimin 51CTO部落格,原文連結:http://blog.51cto.com/lavasoft/200604,如需轉載請自行聯系原作者