全面認識Flash技術

轉載 http://lavasoft.blog.51cto.com/62575/200604

如今的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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章