資源描述:
《swf文件結(jié)構(gòu)大解剖 一、swf文件結(jié)構(gòu)和信息》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、SWF文件結(jié)構(gòu)大解剖一、swf文件結(jié)構(gòu)和信息Flash各種實(shí)例剖析我們都看過不少,不過你有沒有想過sX生成的swf文件版本號為6)4文件大小正確的文件大小應(yīng)該是按7、6、5、4的順序來排列得到的十六進(jìn)制數(shù),單位是字節(jié)。5678影片寬高數(shù)據(jù)控制碼(詳細(xì)說明見后)9···影片的寬度與高度數(shù)據(jù)存放區(qū)所占字節(jié)數(shù)由控制碼決定(詳細(xì)說明見后)N1(作用不詳)N2影片放映速度設(shè)計(jì)時(shí)指定的速度,單位是(幀/秒)。N3影片的總幀數(shù)正確的幀數(shù)應(yīng)該是按N4、N3的順序排列得到的十六進(jìn)制數(shù)。N4N5(作用不詳)N6(作用不詳)N7背景色中紅色值N8背景色中綠色值N9背景色
2、中藍(lán)色值···影片數(shù)據(jù)區(qū) 文件的最后四個(gè)字節(jié)為40000000 注:因長寬控制碼所占字節(jié)數(shù)不確定,故其后的偏移量無法用具體數(shù)字來表示,改用N1、N2、N3等符號。 以上表格中所展示的是swf文件的結(jié)構(gòu),通過它你就能很清楚地明白哪部分對你編程有用,哪部分可以解決長期困繞的你的問題,怎么樣?是不是開始偷著樂了?別著急,繼續(xù)看更精彩的還在后面呢!97312348: 前面表中第八個(gè)字節(jié)“影片寬高數(shù)據(jù)控制碼”指的是下表中控制碼一欄中的數(shù)字。第九個(gè)字節(jié)至第N個(gè)字節(jié)“影片的寬度與高度數(shù)據(jù)存放區(qū)”指的是下表中控制碼右邊的那一行數(shù)字。由于控制碼的不同,寬度與
3、高度的數(shù)據(jù)存放區(qū)的字節(jié)長度也不同?! ∠卤碇袑⒖刂拼a所在的字節(jié)分為兩部分(高四位和低四位)。高低位不同的組合決定了數(shù)據(jù)區(qū)占用字節(jié)數(shù)以及不同的高度算法。 相應(yīng)的控制碼后的藍(lán)色條表示數(shù)據(jù)區(qū)所占用的字節(jié)。五星代表有效數(shù)據(jù)(注意每個(gè)五星只占半個(gè)字節(jié)),其中前面幾個(gè)連續(xù)的五星對應(yīng)的數(shù)據(jù)記錄了高度值,后面幾個(gè)連續(xù)的五星對應(yīng)的數(shù)據(jù)記錄了寬度值。 將連續(xù)的五星所在位置的數(shù)(十六進(jìn)制)組合起來,得到四位或六位的十六進(jìn)制數(shù),將此數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),白色五星得到的數(shù)除以10就是影片寬度數(shù)值,紅色五星得到的數(shù)除以40就是影片高度數(shù)值?! ∥覍γ恳环N控制碼都給出一個(gè)具體例
4、子,請對比文件中相應(yīng)的字節(jié)和實(shí)際的寬度和高度值??刂拼a012345678寬×高50★★★★ ★★★★ 18×1800B4000B40 58 ★★★★ ★★★★ 36×18005A0000B400 60 ★★★★ ★★★★ 100×48003E80001E00 68 ★★★★ ★★★★ 160×1000019000003E800 70 ★★★★ ★★★★ 400×320000FA00000C800 78 ★★★★ ★★★★
5、 550×40000055F00000FA000 80 ★★★★ ★★★★ 1600×12000003E8000002EE00 88 ★★★★★★ ★★★★ 2880×28800001C2000000708000 注:由于Flash的圖像尺寸的限制,控制碼只有以上幾種情況,編程時(shí)只需對以上幾種情況進(jìn)行判斷,分別做不同的計(jì)算處理。97312348: 用Flash自帶的播放器可將一個(gè)swf文件轉(zhuǎn)換成一個(gè)可自動(dòng)播放的exe文件,這個(gè)轉(zhuǎn)換過程只不過是在該swf文件前后加上播放器的代碼而達(dá)到的,當(dāng)我們知道了這個(gè)轉(zhuǎn)換原理后,我
6、們就可以實(shí)現(xiàn)由exe向swf轉(zhuǎn)換了。 對由swf文件轉(zhuǎn)換成的exe文件進(jìn)行分析后,我發(fā)現(xiàn)Flash自帶的播放器只是對swf文件做了如下幾步修改: 1、在一個(gè)swf文件前加上exe文件頭,共5BFFF字節(jié); 2、接下來是完整的swf文件內(nèi)容; 3、再接下來四個(gè)字節(jié)是exe文件的結(jié)束標(biāo)志; 4、最后是記錄swf文件大小的四個(gè)字節(jié)?! ⒁粋€(gè)Flash影片的exe文件轉(zhuǎn)換成swf文件,我們只需把swf文件轉(zhuǎn)換成的exe文件的過程反著做一下就可以了,也就是將上述1、3、4步驟加上的東西刪除掉就可以了?! ≡斠娤卤恚骸屏孔止?jié)內(nèi)容備注 04D5A
7、90···0000exe文件頭···5BFFF 5C00046(或43)swf文件頭5C001575C002535C003(可能為05、04、03、02、01)swf文件版本號 5C004記錄swf文件大小的四個(gè)字節(jié) 5C0055C0065C007 ···swf文件內(nèi)容 40swf文件的結(jié)束標(biāo)志 00 00 00 56exe文件的結(jié)束標(biāo)志 34 12 FA 記錄swf文件大小的四個(gè)字節(jié)與5C004~5C007的內(nèi)容相同 到這里我們對swf文件的解剖分析就結(jié)束了,你可以結(jié)合著Flash控件動(dòng)手制作一個(gè)你自己的flash播放器,一定會(huì)很棒!
8、97312348:[感謝閱讀這篇文章,..,]