這是我從很多地方的來素材經過整理的最後版本,講的是flash平台最基礎内容
1.ActionScript
ActionScript簡稱AS,是Flash平台的程式設計語言。通過AS編寫的程式,最終會編譯成SWF、SWC檔案。SWF就是我們通常所說的Flash動畫。但是現在SWF已經不僅僅是動畫,而且是RIA的載體。
ActionScript有3個版本,AS1、AS2、AS3。這三個版本之間差别很大,現在最流行的是AS3,隻有FlashPlayer9及以上播放器才支援AS3編譯的SWF。
2.Flex
因為在開發RIA的時候,需要很多常用的功能,例如控件(Button、ComboBox、List等)、布局(VGroup、VBox等),Adobe就開發了一套官方的架構集來實作這些功能,這套架構集就叫做Flex。
3.Flash
現在Adobe已經把Flash定義為一個平台,包括Flash cs、Flash Builder、AIR、Flash Player以及更多。但通常我們所講的Flash有兩個意思:一個就是我們最常見的Flash動畫,也就是那些擴充名為.swf的動畫檔案,另一個就是Flash cs,Flash動畫的制作軟體。
4.Flash Builder和Flex Builder
AS發展到3.0之後,文法和Java很像,再加上增強的性能和強類型,可以完全脫離Fla檔案,使用純文字編碼。但是Flash cs是一個動畫制作工具,雖然可以寫一些代碼嵌入到動畫裡面,但使用起來不友善。于是Adobe公司有釋出了Flex Builder,一個基于Eclipse的IDE,并釋出了Flex SDK。
用Flex Builder可以開發純AS代碼項目。Flex Builder從4.0開始,改名為Flash Builder。
5.Flash cs
Flash cs是Flash動畫制作工具軟體。制作好的動畫以.fla檔案儲存,經到處後得到.swf檔案.
6.Flash Player
(1)獨立版和插件版
Flash Player分為獨立版和插件版,插件版安裝後,讓浏覽器可以播放swf檔案,這也是現在大多數網站的做法。獨立版安裝後,則可以直接在本地輕按兩下swf檔案打開一個視窗來播放,無須播放器。
(2)調試版和普通版
通過Adobe更新程式更新的均為普通版,該版适合普通使用者。調試版(Debug)在swf發生運作時錯誤的時候會彈出對話框,而普通版不會。開發人員應該安裝調試版。
(3)下載下傳最新的獨立版和調試版
通路http://www.adobe.com/support/flashplayer/downloads.html
ActiveX control content debugger(for IE) 針對IE的調試插件版
Plugin content debugger(for Netspace-compatibel browers) 針對其他浏覽器的調試插件版
Projector content debugger 獨立調試版
Projector獨立普通版
(4)如果要下載下傳普通版,則通路http://get.adobe.com/flashplayer,該位址會根據浏覽器自動下載下傳對應的普通插件版。
(5)下載下傳的檔案,檔案名中帶有_sa_字樣的為獨立版播放器,否則為插件版。
檔案名中帶有_debug字樣的為調試版,否則為非調試版。
檔案名中帶有_ax_字樣的是針對IE浏覽器的版本。
檔案名中帶有_plugin字樣的針對其他浏覽器版本。
6)關于獨立Flash Player播放器
如果要播放swf檔案,一定不要使用暴風影音、QQ影音。垃圾影音等軟體的檔案自動那個關聯。。。。
正确的做法是:
1. 複制獨立調試版Flash Player到你的C:\Program Files檔案夾(其他檔案夾也行,建議是路徑為全英文),輕按兩下運作一次,即可與swf檔案自動關聯(Win7/Vista使用者右擊,選擇“以管理者身份運作”)
2. 沒有2,如果你一定要找2,那你就很2.。。。。。。。。。。
7.AIR
Flash Player再強大,也要運作在浏覽器中,受浏覽器的限制。為了擺脫浏覽器,Adobe有釋出了RIA。RIA是一個Runtime,可以了解為JVM。有了它,就可以使用AS3開發桌面軟體,而且開發出的軟體和Java軟體一樣跨平台運作(一次編譯,遍地運作)。例如:新浪微網誌的AIR用戶端
8.SWF SWC SWZ
入門級講解
(1)SWF
Swf是我們見到的最多的Flash平台檔案了。是的,它就是Flash平台的最終表現形式。前面說到的無論是Flex、Flash cs還是純AS,最終編譯出來的檔案都是swf格式,浏覽器中的Flash Player插件和獨立的Flash Player,也隻能打開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”,而程式猿碰到後兩者的可能性比較大
(2)SWC
SWC是一種庫檔案,通常用來釋出非開源的類。程式猿們将源碼編譯成SWC檔案,并釋出API文檔,使用者就可以使用這些SWC提供的類庫進行自己的開發了。SWC不是運作時共享的,而是在編譯的時候直接加入了程式SWF中。最終的SWF可以脫離SWC運作。
SWC本質上是一個Zip文檔,其中包含一個library.swf檔案和一個用于描述的xml檔案,你可以zip管理器打開檢視
(3)SWZ
從TLF(Text Layout Framework)出現以來,Flex SDK中多了一個flashx包,這個包中的功能,就是用SWZ實作的。SWZ是在運作時共享的庫,你可以将其看做一個可以放在外部的SWC。而且SWZ的共享是平台級的(Module SWF的共享是浏覽器級别的),存在與作業系統緩存中(Module SWF存在浏覽器緩存中),隻要下載下傳過一次SWZ,你的作業系統中所有用到這些SWZ的地方都不用重新下載下傳
程式猿專版
隻要做Flex項目,終究有一天會涉及到RSLs,要和swf、swc、swz打交道。
RSLs全稱是Runtime Shared Libraries,也就是“庫”的意思。它是Adobe Flash平台的二進制子產品化技術,目的類似于動态連結庫(Dll),但實作的技術細節完全不一樣。
(1) swz檔案
從flash player 9.0.115以後,Adobe支援的一種RSLs,稱之為“signed framework RSLs”。
ADOBE的解釋:簽名的RSLs(也就是swz)會優先緩存在flash player中,而且可以被任何應用程式通路,即使是和原先程式不同的domain也能。Swz檔案隻需下載下傳一次,就算是浏覽器緩存被清空,swz也可以從disk重新讀出。而未簽名的RSLs(會以swf形式存在)隻能緩存在各個浏覽器中,如果浏覽器緩存清空,就需要再次下載下傳,而且被限定為隻能在Application同一domain内通路。
Adobe将swz檔案cache存在PC的固定檔案夾下:
Windows 7: C:\Users\${username}\AppData\Roaming\Adobe\Flash Player\AssetCache\
Windows XP: C:\Documents and Settings\${username}\Application Data\Adobe\Flash Player\AssetCache\.
隻有Adobe公司自己才能建立swz檔案。盡管有人建議開放給合作的第三方,但迄今為止還沒有。
Swz檔案是一種未知加密(?)檔案格式,flash player 内部會對swz檔案進行簽名認證
(2) swc檔案
swc檔案和swz、swf檔案最大的差別在于:它是用在編譯期,而不是運作期。RSLs指的是swf和swz,swc不算是RSLs,它倆之間有間接關系。
在編譯時,swc可以被靜态連結,也可以被動态連結,這是有編譯參數決定的
Swc檔案是一個zip格式檔案,打開後有兩個檔案:library.swf和catalog.xml.其中library.swf 和 catalog.xml名字是固定的, catalog.xml是對library.swf的描述.
需要對動态連結的情況作一點說明:隻有帶有摘要資訊的swc檔案才能被動态連結,否則運作時會出錯,讓你重新編譯。Swc檔案中的catalog.xml中的資訊會編譯到app.swf中,而app.swf運作時會找原swc中的library.swf檔案(需要更名),并且會校驗RSL(原library.swf檔案)的摘要資訊.
如果你遇到過 "Flex Error #1001: Digest mismatch with RSL ..."之類的錯誤, 這是因為:運作時的rsl swf不是編譯時swc中的libray.swf.
如果你隻拿到一個test.swc檔案, 你需要将這個swc中的library.swf用unzip提取出來, 并且更名為test.swf
大部分同學不用做這個步驟, 是因為Flash Builder已經自動幫我們做過了, 如果你作手動編譯, 就需要自己手動做.
(3) swf檔案
app swf是指可以直接在flash player中運作的, 而library swf是指swc檔案中的library.swf
檔案,module swf指Flex Module産生的swf檔案
(4) 有關RSL的編譯參數
(5) mxmlc和compc是Flex SDK自帶的編譯指令, 可以用下面的形式來檢視其自帶的幫助:
(6) #mxmlc -help list advanced details
(7) #compc -help list advanced details
(8) compc預設debug是true, 是以當用compc編譯時, 最終的release版本需要指定 debug 為 false,
(9) 相反mxmlc預設debug是false.
(10) 預設值還需要考慮{FLEX_HOME}/frameworks/flex_config.xml檔案, 這個檔案配置了很多的預設值.
(11) 因為很多的編譯參數都有别名(alias), 是以在網上查找這些資料時, 為了不至于搞糊塗, 可以對應上面的兩個指令的help來看.
(12) static-link-runtime-shared-libraries: 是否用動态連結
(13) runtime-shared-library-path: RSL配置, 可以有多個
(14) external-library-path: 編譯時不要将指定的swc中的類帶入, 可以指定多個
(15) optimize: 編譯時是否優化
keep-as3-metadata: 通過指定metadata, 将未指定的metadata的相關代碼清除, 以減少size. 可以指定多個