天天看點

FLASH 之 AMF 格式

一、什麼是AMF

AMF是Action Message Format協定的簡稱,AMF協定是Adobe公司自己的協定,主要用于資料互動和遠端過程調用。AMF是Flash與伺服器進行通信的一種編碼格式。AMF與WebService中的XML不同的是AMF是二進制資料,而XML是文本資料,AMF的傳輸效率比XML高。它的最大特色是可以直接傳輸複雜的資料類型,比如數組、普通對象、日期對象等,而且可以對傳輸的資料進行壓縮以提高傳輸速率,另外結合Flash Remoting網關(FluorineFx、amfphp、OpenAMF),通過遠端過程調用(RPC)可以在用戶端友善調用伺服器定義的公開方法并得到傳回的資料。是以它的設計是為了提高資料傳輸速率,提高開發效率的,目前在一些基于Flash開發的大型網頁遊戲中都能找到它的蹤影。

二、檢視AMF資料

使用firefox浏覽器的flashbug插件可以檢視flash的trace,policy log,shared object

Firebug插件下載下傳位址:https://addons.mozilla.org/zh-CN/firefox/addons/versions/1843

Flashbug插件下載下傳位址:https://addons.mozilla.org/zh-CN/firefox/addon/14465

Charles是一個HTTP代理伺服器、,HTTP螢幕、反轉代理伺服器。它允許一個開發者檢視所有連接配接網際網路的HTTP通信.這些包括request,response現HTTP headers(包含cookies與caching資訊)。

charles: http://www.charlesproxy.com/

三、參考資料

1.http://androider.iteye.com/blog/268933

2.http://www.cnblogs.com/webflash/archive/2010/04/22/1717771.html

3.http://www.cnblogs.com/studyzy/archive/2008/04/09/1143685.html

四、題外

真是好久沒有寫blog,不管是技術blog還是空間blog,工作一年多,茫茫然,一半時間在完成工作任務學新東西,一半時間久在飄飄然~~~

AMF是由于遊戲中播放Mp3用sound.loadCompressedDataFromByteArray(ba, ba.length)的時候會出現  error#2048參數的amf編碼不能超過40k

的錯誤,也許sound的動态加載内容的方式是通過amf格式實作的

解決辦法是:load之前将ByteArray的position設為0,保證ba中有有效内容