【轉】ActionScript,Flash,Flash/Flex Builder,FlashPlayer,AIR,swf,swc,swz之間的區別

 

原文連接:http://zengrong.net/post/1295.htmhtml

ActionScript

ActionScript一般簡稱爲AS,它是Flash平臺的語言。AS編寫的程序,最終能夠編譯成SWF、SWC。SWF就是咱們常說的Flash動畫。可是如今SWF已經不只僅是動畫,而是RIA的載體。程序員

ActionScript有3個版本,分別是1.0版(AS1),2.0版(AS2)和3.0版(AS3)。只有Flash Player9及以上播放器才支持AS3編譯的SWF。這三個版本的差異很是大,如今最流行的版本是AS3。編程

Flex與MXML

由於在開發RIA的時候,須要不少經常使用的功能,例如控件(Button,ComboBox,List……)、佈局(VGroup、VBox……)等等……Adobe就開發了一套官方的框架集來實現這些功能,這套框架集就叫作Flex。vim

爲了方便程序員快速編寫RIA程序界面,Adobe又實現了一種基於XML語法的語言MXML,這套語言很像HTML,能夠與AS混用,MXML最終也是編譯成SWF或SWC。Flex框架就是使用AS3與MXML兩種語言寫成的。但說白了,MXML 外加實現了MXML語法,若是你有興趣,也能夠本身實現這些。Flash和Flex,都是用AS編寫,使用swf體現。瀏覽器

Flash

如今Adobe已經將Flash其定義爲一個平臺(Flash Plantform),包括了Flash IDE、FlashBuilder、AIR、FlashPlayer以及更多。但咱們通常講Flash,有兩個意思,一個是指Flash動畫(也就是網頁上擴展名爲swf的動畫),另外一個就是FlashIDE。緩存

Flash(IDE)從4.0開始進入中國,前期一直在網頁動畫方面告訴發展,多被用來作網頁小廣告(讓你CPU100%的罪魁禍首之一)和MV(showgood三國系列、小小系列、大學自習室……曾經風靡一時啊)。那時的「閃客」,主要是作動畫,即便涉及到編程,也大可能是用當時的AS1.0(後來FlashMX2004升級爲AS2.0)寫一點stop、gotoAndPlay之類的東東了。Flash(IDE)發展到8.0版本之後,纔開始大量用於編程,當時比較流行的就是「Flash留言本」等等。相關歷史我作了一張圖來表示,括號裏的數字是年份。併發

FlashIDE發展史

 

Flash Builder/Flex Builder

AS發展到3.0以後,因爲其語法和JAVA比較像,再加上加強的性能與強類型,能夠徹底脫離FLA文件,使用純文本編碼,受到了許多其餘程序員(尤爲是JAVA程序員)的青睞。由此得以高速發展,用AS開發程序的人也愈來愈多。AS在視頻網站、遊戲行業發展迅速。可是,FlashIDE雖然是一個很好的動畫製做工具,卻不是一個好的開發工具。因而,Adobe又發佈了FlexBuilder,一個基於Eclipse的IDE,併發布了Flex SDK,後來又開源了。app

有了免費的編譯器,Flex得以快速發展。用FlexBuilder也能夠開發純AS項目(即全部的文件都是as文件,不包含MXML,也不包含FLA)。一個真正的程序猿,應該更願意使用這種方式吧?FlexBuilder從4.0開始,被Adobe更名爲Flash Builder。框架

Flash Builder和Flash IDE不該該放在一塊兒比較,它們不是一類軟件。若是必定要比較一下的話,那麼就是FlashIDE比較偏重於設計一點,用它作動畫比較方便,固然也能夠用它編寫AS3程序。用FlashIDE編寫的程序,會有一個FLA源文件,可能還包含多個as文件。FlashBuilder偏重於程序,用它能夠開發MXML(也就是Flex)項目。也能夠用它編寫純AS項目。用FlashBuilder編寫的項目,都是純文本文件(.as或者.mxml)。 對於程序流,固然偏心FlashBuilder,而設計流比較偏心Flash IDE。編輯器

固然,IDE並不是只有Adobe官方的東西,FlashDevelop就是個免費的IDE。若是你願意,用記事本作編輯器也沒什麼很差(好比說zrong就正在嘗試VIM),由於SDK和編譯器都是免費的。

Flash Player

swf動畫須要在網頁上顯示出來,就須要安裝Flash Player。Flash Player的不一樣版本,其實與FlashIDE也有必定的對應關係(從上圖也能看出來)。但到了AS3時代後,這個對應關係就不那麼明顯了。Flash Player9是能支持AS3 的最低版本(其實前面還有一個Flash Player 8.5,只是沒普及就升級到9了),後面的FlashPlayer 都能支持AS3了。關於Flash Player,我寫過一篇有史以來關於FlashPlayer的最詳細說明,看這個就很清楚了。

AIR

Flash Player再強大,也是運行在瀏覽器中,受瀏覽器約束。爲了擺脫瀏覽器,Adobe又出奇招,發佈了AIR。AIR其實就是一個Runtime,你能夠把它理解成JVM。有了AIR,就能夠用AS3開發桌面軟件,並且開發出的軟件可跨平臺運行(這和JAVA的一次編譯,隨處運行不是一模一樣麼!)。目前國內的AIR應用主要集中在網站的客戶端方面,例如新浪微博AIR客戶端等。

SWF SWC SWZ

SWF
swf是咱們見到的最多的Flash平臺文件了。是的,它就是Flash平臺的最終表現形式。前面說到了,不管是Flex、Flash仍是純AS3,最終編譯出來的文件都是swf格式,瀏覽器中的FlashPlayer插件和獨立的FlashPlayer,也只能「打開」swf文件進行播放。前面說到的AIR,它的本質也就是運行時+swf而已。

其實並不是全部的swf都能直接播放的。swf有3種:

  1. 程序SWF(application swf):能夠直接在flash player中運行的swf;
  2. 庫SWF(library swf):swc文件中的library.swf;
  3. 模塊SWF(module swf):Flex Module產生的swf文件。

最終用戶碰到的絕大多數都是「程序SWF」,而程序猿們碰到後面兩種SWF的可能性就比較大。

SWC

SWC是一種庫文件,一般用來發布非開源的類。程序猿們將源碼編譯成SWC文件,併發布API文檔,咱們就可使用這些SWC提供的類庫進行本身的開發。SWC並非運行時共享的,而是在編譯的時候直接加入了程序SWF中。最終的程序SWF能夠脫離SWC運行。

SWC本質就是一個zip文檔,其中包含一個library.swf文件和一個用於描述的xml文件,你能夠用zip管理器打開它查看。

SWZ

你可能會發現,從TLF出現以來,Flex SDK中多了一個flashx包,這個包中的功能,就是用SWZ實現的。SWZ是在運行時共享的庫,你能夠將其看做一個能夠放在外部的SWC。並且SWZ的共享是平臺級別的(MoudleSWF的共享是瀏覽器級別),存在於操做系統緩存中(ModuleSWF的存在瀏覽器緩存),只要下載過一次SWZ,你的操做系統中全部用到這些SWZ中的地方(不管是IE、FF、Chrome仍是AIR)都不用從新下載。

對於程序猿,這裏的關於SWC和SWZ的信息確定是不夠的,因此建議看一下smithfox的swf swc swzRSLs ant,本文的這個部分也是參照它寫成的。

全文完

相關文章
相關標籤/搜索