小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

swf文件格式說明書(中文)!

 絕學(xué)軒 2009-09-19
swf文件格式說明書(中文)!
swf 文件研究——swf說明書
第一節(jié):swf文件頭信息
 
swf文件頭包含的信息可謂巨大。能滿足很多人的需求。也很容易來出來。
 
現(xiàn)在,開始:
 
Macromedia Flash文件格式(SWF)詳細(xì)說明書
Macromedia Flash文件格式(SWF)(讀作“swiff”)是Macromedia Flash播放器在互聯(lián)網(wǎng)上進(jìn)行矢量圖形和動畫發(fā)布的文件格式。SWF文件格式不是為圖像編輯器之間共享圖像而是為高效的解釋格式設(shè)計的,它的設(shè)計是為了滿足以下條件:
在屏幕上即時顯示:此格式的最主要目標(biāo)是在屏幕上即時顯示和支持實例,彩色圖像的快速播放,動畫和交互式按鈕。
可擴(kuò)展性:此格式為標(biāo)簽式格式,因此其播放器能夠通過增加新的特性來進(jìn)行升級而兼容其播放器的早期版本。
網(wǎng)絡(luò)發(fā)布:此格式能夠在有限的網(wǎng)絡(luò)資源和不可預(yù)測的網(wǎng)絡(luò)狀況下進(jìn)行傳輸,文件被壓縮到很小并且支持流式播放。SWF文件是一種二進(jìn)制格式的文件,它不能像HTML文件一樣可以直接閱讀和理解。SWF文件使用了諸如位壓縮、可選字段式結(jié)構(gòu)等方法來減小文件的尺寸。
簡易性:此格式簡單的結(jié)構(gòu)使Flash播放器變得很小且便于攜帶。另外,F(xiàn)lash播放器僅僅依賴操作系統(tǒng)特性中有限的集合。
 
文件獨立性:文件的顯示不依賴任何諸如字體之類的擴(kuò)展資源。
 
可變性:文件能夠在有限的硬件環(huán)境下很好的工作,而且能夠盡可能的利用更好的硬件,這一點很重要,因為用戶的計算機(jī)有著不同的顯示器設(shè)置和色深。
 
速度:文件能夠以很快的速度和很高的質(zhì)量播放。
 
支持腳本:此格式包含了約定格式的標(biāo)簽,標(biāo)簽規(guī)定了堆棧式機(jī)器解釋字節(jié)碼的順序。字節(jié)碼支持一種叫做ActionScript(動作腳本)的語言。Flash播放器規(guī)定了運行時的ActionScript(動作腳本)模式,此模式允許原始的繪制、服務(wù)和Flash播放器特性之間相互作用。
 
SWF文件的擴(kuò)展名為.swf,它是一種MIME(多用途的網(wǎng)際郵件擴(kuò)充協(xié)議)類型的應(yīng)用程序(X-Shockwave-Flash)。
SWF格式經(jīng)歷了若干個版本。在第5個版本中,SWF的標(biāo)簽設(shè)置經(jīng)過了一次較大規(guī)模的充實和完善。從第6個版本之后,文件格式變化較小,例如僅在ActionScript中越來越多的Flash新特性部分或者完全的被實現(xiàn)。因此,如果打算增加SWF文件中使用較新特性的內(nèi)容,那么就應(yīng)該熟悉Flash播放器提供的ActionScript對象模型,對于這些最好的參考是O’Reilly的《ActionScript: the Definitive Guide》,由科林·莫克出版社出版。
SWF文件頭
      所有的SWF文件均以以下頭部開始:
SWF文件頭
字段 類型 * 說明
簽字標(biāo)識 UI8 標(biāo)識字符:
“F”表示未壓縮
“C”表示已壓縮(版本6或后續(xù)版本)
簽字標(biāo)識 UI8 此標(biāo)識通常為“W”
簽字標(biāo)識 UI8 此標(biāo)識通常為“S”
版本 UI8 單字節(jié)文件版本數(shù)(例如,0x06表示版本6)
文件長度 UI32 整個文件的字節(jié)長度
幀尺寸 RECT 單位幀的尺寸
幀率 UI16 每秒的幀數(shù),其16個位是按照8.8的格式表示的
幀數(shù) UI16 影片的總幀數(shù)
* 此類型在基本數(shù)據(jù)類型一節(jié)中定義
 
文件頭部是由一個三字節(jié)的標(biāo)識符開始,為0x46、0x57、0x53(“FWS”)或者0x43、0x57、0x53(“CWS”)其中之一。“FWS”標(biāo)識符說明該文件是未壓縮的SWF文件,“CWS”標(biāo)識符則說明該文件前8個字節(jié)之后(即文件長度字段之后)的全部數(shù)據(jù)為開源的標(biāo)準(zhǔn)ZLIB方式壓縮。
ZLIB庫所使用的數(shù)據(jù)格式在1950至1952年的請求注解, Internet標(biāo)準(zhǔn)文檔(RFCS)中被詳細(xì)說明。CWF文件壓縮形式僅適用于版本6或者更高。
標(biāo)識符之后是一個字節(jié)的版本號,這個版本號并不是一個ASCII碼,而是一個8位的數(shù)字,比如,版本4用0x04標(biāo)識,而不是ASCII碼“4”(0x35)。
文件長度字段是整個包含文件頭在內(nèi)的文件字節(jié)長度,如果是未壓縮的SWF文件(標(biāo)識符FWS),那么長度字段應(yīng)該是和文件大小恰好匹配,如果是一個經(jīng)過壓縮的SWF文件(標(biāo)識符CWS),那么文件長度字段是指文件經(jīng)過解壓縮之后的總長度,因此它一般不會和文件大小匹配,使用未壓縮的文件尺寸能夠讓解壓過程獲得更高的效率。
幀尺寸字段定義了影片的寬度和高度,它使用了RECT結(jié)構(gòu)進(jìn)行存儲,這就意味著它的尺寸能夠根據(jù)坐標(biāo)編碼所需的位數(shù)變化。幀尺寸的RECT結(jié)構(gòu)使用的X和Y軸的最小值總為0。而X和Y軸最大值分別表示了寬度和高度(參閱位值的使用)
幀率是以幀每秒為單位的幀回放比率,此比率在SWF文件包含流式聲音數(shù)據(jù)或者Flash播放器運行在低速CPU下時并不會得到保證。
幀數(shù)是整個SWF影片幀的總數(shù)量。
SWF文件結(jié)構(gòu)
      文件頭之后是一系列連續(xù)的標(biāo)簽數(shù)據(jù)塊,所有的標(biāo)簽都共享一種通用格式,因此任何解析SWF文件的程序都能跳過它不能識別的數(shù)據(jù)塊。塊內(nèi)數(shù)據(jù)能夠指向當(dāng)前一個塊內(nèi)的偏移量,但不能指向其它數(shù)據(jù)塊內(nèi)的偏移量。這就使得標(biāo)簽?zāi)軌虮惶幚鞸WF文件的工具進(jìn)行移除、插入或修改操作。
 
SWF文件格式
*****

 
標(biāo)簽格式
      每個標(biāo)簽都是由一個類型和一個長度值開始的,存在兩種標(biāo)簽頭部格式:短格式和長格式。短標(biāo)簽頭部用于62字節(jié)或者更小的標(biāo)簽數(shù)據(jù),長標(biāo)簽頭部能夠用于任何大小不超過4GB的標(biāo)簽數(shù)據(jù),從長遠(yuǎn)來看這將會是非常實用的。
記錄頭部(短)
字段 類型 說明
標(biāo)簽編碼和長度 U16 高10位:標(biāo)簽類型
低6位:標(biāo)簽長度
 
注意:標(biāo)簽編碼和長度字段并不是一個10位的位字段后面跟著6位的位字段,而是一個雙字節(jié)的字,SWF文件不間斷的字節(jié)排序使得這兩者具有不同的布局。
該字段中的長度并不包含標(biāo)簽開始處的記錄頭部(即該字段所占有的長度)。
如果標(biāo)簽的長度大于或者等于63字節(jié),那么它會被存儲在長標(biāo)簽頭部。長標(biāo)簽頭部由一個標(biāo)識長度為63字節(jié)(0x3f)的短標(biāo)簽頭部和一個32位的長度組成。
記錄頭部(長)
字段 類型 說明
標(biāo)簽編碼和長度 U16 以短標(biāo)簽頭部方式存儲的
長度為63字節(jié)的標(biāo)簽編碼和長度
長度 UI32 標(biāo)簽的長度
 
描述標(biāo)簽和控制標(biāo)簽
SWF中的標(biāo)簽分描述標(biāo)簽和控制標(biāo)簽兩種:
描述標(biāo)簽這種標(biāo)簽描述了SWF影片的內(nèi)容—形狀、文本、圖像、聲音等等。每個定義標(biāo)簽都為其描述的內(nèi)容指定了一個被稱為“角色I(xiàn)D”的唯一ID。Flash播放器把這些角色存放在一種叫“字典”的庫里。描述標(biāo)簽本身不能驅(qū)動某個事件的產(chǎn)生。
      控制標(biāo)簽這種標(biāo)簽可以創(chuàng)建和驅(qū)動字典中角色的實例,控制影片的播放。
SWF文件標(biāo)簽分類
      通常,SWF文件中的標(biāo)簽可以任意出現(xiàn)。但盡管如此,也必須遵循少數(shù)幾個規(guī)則:
1、一個標(biāo)簽只能依賴前面定義過的標(biāo)簽。任何一個標(biāo)簽都不能依賴在才后面定義的標(biāo)簽。
2、描述標(biāo)簽必須在使用它的任何控制標(biāo)簽之前定義。
3、流式聲音標(biāo)簽必須以順序方式存儲。不規(guī)范的流式聲音標(biāo)簽將會導(dǎo)致聲音播放不正常。
4、結(jié)束標(biāo)簽一般是SWF文件的最后一個標(biāo)簽。
字典
      字典是存放已經(jīng)定義好的角色的庫,它可以被控制標(biāo)簽所應(yīng)用。字典的建立和使用應(yīng)遵循以下規(guī)則:
1、描述標(biāo)簽定義了諸如形狀、字體、位圖或者聲音。
2、每一個描述標(biāo)簽都被指定一個唯一的角色I(xiàn)D。
3、字典中的內(nèi)容被存儲在角色I(xiàn)D之后。
4、控制標(biāo)簽?zāi)軌蛲ㄟ^角色I(xiàn)D在字典中找到所需內(nèi)容并對其執(zhí)行某種操作,例如顯示形狀或者播放聲音。
每個角色I(xiàn)D必須指定一個唯一的ID,不允許重復(fù)ID。例如,第一個角色I(xiàn)D是1,第二個是2。角色0被指定為表示空角色的專用ID。
并不是只有控制標(biāo)簽才能引用字典。描述標(biāo)簽同樣也可以使用字典中的數(shù)據(jù)進(jìn)行更復(fù)雜的角色定義。例如,按鈕和剪輯標(biāo)簽都使用到了定義它們內(nèi)容的角色。文本標(biāo)簽也包含了字體角色以便于為文本選擇不同的字體。
以下圖表說明了描述標(biāo)簽、控制標(biāo)簽和字典之間的一種典型交互關(guān)系:
 **********

* 詳見顯示列表
處理SWF文件
      Flash播放器會在遇到“顯示幀”標(biāo)簽之前處理SWF文件中所有的標(biāo)簽。這樣,顯示列表將被復(fù)制到場景中,在處理下一個幀之前Flash播放器會一直處于空閑狀態(tài)。第一幀的內(nèi)容是第一個顯示幀之前的所有控制標(biāo)簽操作所積累的效果。而第二個幀的內(nèi)容是第二個顯示幀之前的所有控制標(biāo)簽操作所積累的效果,依此類推。
文件壓縮策略
      由于SWF文件在網(wǎng)絡(luò)中的傳輸日趨頻繁,那么文件被盡可能的壓縮將是非常重要的。有幾種方法可以達(dá)到此目的。以下提到幾種方法:
      復(fù)用角色字典的結(jié)構(gòu)能夠讓SWF文件的元素很方便的得到復(fù)用。例如,形狀、按鈕、字體或者位圖可以被一次存儲,多次引用。
      壓縮當(dāng)一條線的起始坐標(biāo)被假定是前一條線的結(jié)束坐標(biāo)的時候,形狀能夠使用一種非常有效的三角編碼方式壓縮。距離一般也使用與最后位置的相對關(guān)系來表示。
      默認(rèn)值矩陣和顏色轉(zhuǎn)換式通常擁有比其他結(jié)構(gòu)更為通用的字段。例如:對于矩陣,轉(zhuǎn)換字段是它最常用的字段,而縮放比例和旋轉(zhuǎn)使用比較少。因此如果縮放字段沒有出現(xiàn),那么它會被默認(rèn)為100%。如果旋轉(zhuǎn)字段沒有出現(xiàn),那么就假定沒有旋轉(zhuǎn)。使用默認(rèn)值能夠縮小文件尺寸。
      改變編碼按規(guī)定,SWF文件只能將變化存放在狀態(tài)之間。但顯示列表使用的形狀數(shù)據(jù)結(jié)構(gòu)和位置、運動、移動模型卻是相反的。
      形狀數(shù)據(jù)結(jié)構(gòu)形狀數(shù)據(jù)結(jié)構(gòu)使用了唯一的結(jié)構(gòu)來減小文件的尺寸以及非常有效的在場景中播放實名形狀。
概要
      SWF文件由頭部和其后的許多標(biāo)簽組成。有描述標(biāo)簽和控制標(biāo)簽兩種。描述標(biāo)簽定義了被視為角色的對象,它被定義在字典中。控制標(biāo)簽操作和使用角色,以及控制影片的流程。

本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/qdlgx/archive/2008/09/02/2868465.aspx

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多