天天看點

Flash平台基本介紹

這是我從很多地方的來素材經過整理的最後版本,講的是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. 可以指定多個

繼續閱讀