著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
作者:曾嶸
鏈接:http://www.zhihu.com/question/20001256/answer/15565376
來源:知乎
ActionScript
ActionScript通常簡稱為AS,它是Flash平台的語言。AS編寫的程序,最終可以編譯成SWF、SWC。SWF就是我們常說的Flash動畫。但是現在SWF已經不僅僅是動畫,而是RIA的載體。
ActionScript有3個版本,分別是1.0版(AS1),2.0版(AS2)和3.0版(AS3)。只有Flash Player 9及以上播放器才支持AS3編譯的SWF。這三個版本的差別非常大,現在最流行的版本是AS3。
Flex與MXML
因為在開發RIA的時候,需要很多常用的功能,例如控件(Button,ComboBox,List……)、布局(VGroup、VBox……)等等…… Adobe就開發了一套官方的框架集來實現這些功能,這套框架集就叫做Flex。
為了方便程序員快速編寫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、Flash Builder、AIR、Flash Player以及更多。但我們一般講Flash,有兩個意思,一個是指Flash動畫(也就是網頁上擴展名為swf的動畫),另一個就是Flash IDE。
Flash(IDE)從4.0開始進入中國,前期一直在網頁動畫方面告訴發展,多被用來做網頁小廣告(讓你CPU100%的罪魁禍首之一)和MV(showgood三國系列、小小系列、大學自習室……曾經風靡一時啊)。那時的“閃客”,主要是做動畫,即使涉及到編程,也大多是用當時的AS1.0(后來Flash MX 2004升級為AS2.0)寫一點stop、gotoAndPlay之類的東東了。Flash(IDE)發展到8.0版本以后,才開始大量用於編程,當時比較流行的就是“Flash留言本”等等。相關歷史我做了一張圖來表示,括號里的數字是年份。
Flash Builder/Flex Builder
AS發展到3.0之后,由於其語法和JAVA比較像,再加上增強的性能與強類型,可以完全脫離FLA文件,使用純文本編碼,受到了許多其他程序員(尤其是JAVA程序員)的青睞。由此得以高速發展,用AS開發程序的人也越來越多。AS在視頻網站、游戲行業發展迅速。但是,Flash IDE雖然是一個很好的動畫制作工具,卻不是一個好的開發工具。於是,Adobe又發布了Flex Builder,一個基於Eclipse的IDE,並發布了Flex SDK,后來又開源了。
有了免費的編譯器,Flex得以快速發展。用Flex Builder也可以開發純AS項目(即所有的文件都是as文件,不包含MXML,也不包含FLA)。一個真正的程序猿,應該更願意使用這種方式吧?Flex Builder從4.0開始,被Adobe改名為Flash Builder。
Flash Builder和Flash IDE不應該放在一起比較,它們不是一類軟件。如果一定要比較一下的話,那么就是Flash IDE比較偏重於設計一點,用它做動畫比較方便,當然也可以用它編寫AS3程序。用Flash IDE編寫的程序,會有一個FLA源文件,可能還包含多個as文件。Flash Builder偏重於程序,用它可以開發MXML(也就是Flex)項目。也可以用它編寫純AS項目。用Flash Builder編寫的項目,都是純文本文件(.as或者.mxml)。 對於程序流,當然偏愛Flash Builder,而設計流比較偏愛Flash IDE。
當然,IDE並非只有Adobe官方的東西,Flash Develop就是個免費的IDE。如果你願意,用記事本做編輯器也沒什么不好(比如說zrong就正在嘗試VIM),因為SDK和編譯器都是免費的。
Flash Player
swf動畫需要在網頁上顯示出來,就需要安裝Flash Player。Flash Player的不同版本,其實與Flash IDE也有一定的對應關系(從上圖也能看出來)。但到了AS3時代后,這個對應關系就不那么明顯了。Flash Player 9是能支持AS3 的最低版本(其實前面還有一個Flash Player 8.5,只是沒普及就升級到9了),后面的Flash Player 都能支持AS3了。關於Flash Player,我寫過一篇有史以來關於Flash Player的最詳細說明,看這個就很清楚了。
AIR
Flash Player 再強大,也是運行在瀏覽器中,受瀏覽器約束。為了擺脫瀏覽器,Adobe又出奇招,發布了AIR。AIR其實就是一個Runtime,你可以把它理解成JVM。有了AIR,就可以用AS3開發桌面軟件,而且開發出的軟件可跨平台運行(這和JAVA的 一次編譯,隨處運行不是如出一轍么!)。目前國內的AIR應用主要集中在網站的客戶端方面,例如新浪微博AIR客戶端等。
SWF SWC SWZ
SWF
swf是我們見到的最多的Flash平台文件了。是的,它就是Flash平台的最終表現形式。前面說到了,無論是Flex、Flash還是純AS3,最終編譯出來的文件都是swf格式,瀏覽器中的Flash Player插件和獨立的Flash Player,也只能“打開”swf文件進行播放。前面說到的AIR,它的本質也就是運行時+swf而已。
其實並非所有的swf都能直接播放的。swf有3種:
SWC
SWC是一種庫文件,通常用來發布非開源的類。程序猿們將源碼編譯成SWC文件,並發布API文檔,我們就可以使用這些SWC提供的類庫進行自己的開發。SWC並不是運行時共享的,而是在編譯的時候直接加入了程序SWF中。最終的程序SWF可以脫離SWC運行。
SWC本質就是一個zip文檔,其中包含一個library.swf文件和一個用於描述的xml文件,你可以用zip管理器打開它查看。
SWZ
你可能會發現,從TLF出現以來,Flex SDK中多了一個flashx包,這個包中的功能,就是用SWZ實現的。SWZ是在運行時共享的庫,你可以將其看作一個 可以放在外部的SWC。而且SWZ的共享是平台級別的(Moudle SWF的共享是瀏覽器級別),存在於操作系統緩存中(Module SWF的存在瀏覽器緩存),只要下載過一次SWZ,你的操作系統中所有用到這些SWZ中的地方(無論是IE、FF、Chrome還是AIR)都不用重新下載。
對於程序猿,這里的關於SWC和SWZ的信息肯定是不夠的,所以建議看一下smithfox的swf swc swz RSLs ant,本文的這個部分也是參照它寫成的。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
作者:曾嶸
鏈接:http://www.zhihu.com/question/20001256/answer/15565376
來源:知乎
ActionScript
ActionScript通常簡稱為AS,它是Flash平台的語言。AS編寫的程序,最終可以編譯成SWF、SWC。SWF就是我們常說的Flash動畫。但是現在SWF已經不僅僅是動畫,而是RIA的載體。
ActionScript有3個版本,分別是1.0版(AS1),2.0版(AS2)和3.0版(AS3)。只有Flash Player 9及以上播放器才支持AS3編譯的SWF。這三個版本的差別非常大,現在最流行的版本是AS3。
Flex與MXML
因為在開發RIA的時候,需要很多常用的功能,例如控件(Button,ComboBox,List……)、布局(VGroup、VBox……)等等…… Adobe就開發了一套官方的框架集來實現這些功能,這套框架集就叫做Flex。
為了方便程序員快速編寫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、Flash Builder、AIR、Flash Player以及更多。但我們一般講Flash,有兩個意思,一個是指Flash動畫(也就是網頁上擴展名為swf的動畫),另一個就是Flash IDE。
Flash(IDE)從4.0開始進入中國,前期一直在網頁動畫方面告訴發展,多被用來做網頁小廣告(讓你CPU100%的罪魁禍首之一)和MV(showgood三國系列、小小系列、大學自習室……曾經風靡一時啊)。那時的“閃客”,主要是做動畫,即使涉及到編程,也大多是用當時的AS1.0(后來Flash MX 2004升級為AS2.0)寫一點stop、gotoAndPlay之類的東東了。Flash(IDE)發展到8.0版本以后,才開始大量用於編程,當時比較流行的就是“Flash留言本”等等。相關歷史我做了一張圖來表示,括號里的數字是年份。

Flash Builder/Flex Builder
AS發展到3.0之后,由於其語法和JAVA比較像,再加上增強的性能與強類型,可以完全脫離FLA文件,使用純文本編碼,受到了許多其他程序員(尤其是JAVA程序員)的青睞。由此得以高速發展,用AS開發程序的人也越來越多。AS在視頻網站、游戲行業發展迅速。但是,Flash IDE雖然是一個很好的動畫制作工具,卻不是一個好的開發工具。於是,Adobe又發布了Flex Builder,一個基於Eclipse的IDE,並發布了Flex SDK,后來又開源了。
有了免費的編譯器,Flex得以快速發展。用Flex Builder也可以開發純AS項目(即所有的文件都是as文件,不包含MXML,也不包含FLA)。一個真正的程序猿,應該更願意使用這種方式吧?Flex Builder從4.0開始,被Adobe改名為Flash Builder。
Flash Builder和Flash IDE不應該放在一起比較,它們不是一類軟件。如果一定要比較一下的話,那么就是Flash IDE比較偏重於設計一點,用它做動畫比較方便,當然也可以用它編寫AS3程序。用Flash IDE編寫的程序,會有一個FLA源文件,可能還包含多個as文件。Flash Builder偏重於程序,用它可以開發MXML(也就是Flex)項目。也可以用它編寫純AS項目。用Flash Builder編寫的項目,都是純文本文件(.as或者.mxml)。 對於程序流,當然偏愛Flash Builder,而設計流比較偏愛Flash IDE。
當然,IDE並非只有Adobe官方的東西,Flash Develop就是個免費的IDE。如果你願意,用記事本做編輯器也沒什么不好(比如說zrong就正在嘗試VIM),因為SDK和編譯器都是免費的。
Flash Player
swf動畫需要在網頁上顯示出來,就需要安裝Flash Player。Flash Player的不同版本,其實與Flash IDE也有一定的對應關系(從上圖也能看出來)。但到了AS3時代后,這個對應關系就不那么明顯了。Flash Player 9是能支持AS3 的最低版本(其實前面還有一個Flash Player 8.5,只是沒普及就升級到9了),后面的Flash Player 都能支持AS3了。關於Flash Player,我寫過一篇有史以來關於Flash Player的最詳細說明,看這個就很清楚了。
AIR
Flash Player 再強大,也是運行在瀏覽器中,受瀏覽器約束。為了擺脫瀏覽器,Adobe又出奇招,發布了AIR。AIR其實就是一個Runtime,你可以把它理解成JVM。有了AIR,就可以用AS3開發桌面軟件,而且開發出的軟件可跨平台運行(這和JAVA的 一次編譯,隨處運行不是如出一轍么!)。目前國內的AIR應用主要集中在網站的客戶端方面,例如新浪微博AIR客戶端等。
SWF SWC SWZ
SWF
swf是我們見到的最多的Flash平台文件了。是的,它就是Flash平台的最終表現形式。前面說到了,無論是Flex、Flash還是純AS3,最終編譯出來的文件都是swf格式,瀏覽器中的Flash Player插件和獨立的Flash Player,也只能“打開”swf文件進行播放。前面說到的AIR,它的本質也就是運行時+swf而已。
其實並非所有的swf都能直接播放的。swf有3種:
- 程序SWF(application swf):可以直接在flash player中運行的swf;
- 庫SWF(library swf):swc文件中的library.swf;
- 模塊SWF(module swf):Flex Module產生的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的共享是平台級別的(Moudle SWF的共享是瀏覽器級別),存在於操作系統緩存中(Module SWF的存在瀏覽器緩存),只要下載過一次SWZ,你的操作系統中所有用到這些SWZ中的地方(無論是IE、FF、Chrome還是AIR)都不用重新下載。
對於程序猿,這里的關於SWC和SWZ的信息肯定是不夠的,所以建議看一下smithfox的swf swc swz RSLs ant,本文的這個部分也是參照它寫成的。