1、Localconnection
Flash之間傳遞資料,自然想到Localconnection等多種辦法。
但在實踐中,如果要傳一個圖片這樣的資料,就沒這麼簡單了。首先,localconnection一次send只能傳遞40k的資料,而且是它AMF編碼後的,也就是說,自己最多也只能有30+K的餘地。 針對這個限制,首先,我們想到拆分N份來發。
var size:int = 30*1024;
var count:int = a.length / size + 1;
var localConnection:LocalConnection =
new LocalConnection();
for(
var i:int = 0; i < count; i++) {
var temp:ByteArray =
new ByteArray(); temp.writeBytes(a, i*size, Math.min(size, a.length - i*size)); localConnection.send(
"photoShowEditor",
"showBitmapData" , temp); } 但事實證明,這個是非常有問題的做法。例如測試中,要傳遞260k的png資料,拆分了9份去傳。結果令人沮喪。。。竟然要4s才最終傳完。 於是,這得出一個結論,localconnection不適合做這種大資料的傳輸。必須找個中轉。 2、Localconnection + SharedObject有人設想利用SharedObject做中轉區,用localconnection通知對方去接受。但是,根據QQ秀用戶端的不完全統計,有10%的人會有意無意的關閉的SharedObject。那很顯然,這個辦法不完全可靠。 3、base64編碼後通過js去傳遞260k的png圖片,編碼後變成340k左右,flash和js之間傳遞參數,完全可以容納這個大小的字串。但這個如果在跨iframe之間傳遞,也許會稍有點小麻煩。但最起碼這個方案是最可靠 最後,除去上述3個方案後,其實最可靠的,也許不是本地直接傳遞,如果能藉助於伺服器,先上傳圖片,再在另外一邊展示,也許問題就完全沒有了。