[ActionScript3.0]ForcibleLoaderで読み込んだ外部SWFをSharedObjectに保存する

公開日: 

外部SWFをFlashのクッキーである、SharedObjectに保存できるとはおもいもしませんでした。。。
これにより、私の研究のFlashでのオンライン同期も実現することができます。

sponcer link


参考サイト
外部SWFをSharedObjectに保存
[結果]
サンプル – swf_to_so.swf
ソース – swf_to_so.zip
[概要]
ForcbleLoaderで読み込んだByteArrayのものを、インデックスアクセスにて、Array型の配列に格納し、それをSharedObjectに保存する。
[詳細]
参考サイトによると、SharedObjectに保存するために、バイナリ型で読み込んだSWFを配列から1文字ずつ取り出して文字列にして結合しているようだ。
まず、バイナリ型で読み込むには、URLLoaderを使えばいいのだが、AS3からAS1,2で作成されたムービーを読み込んで扱うには、ForcibleLoaderを使わなくてはいけない。
(ForcibleLoaderについてはこちら
そこで、まず読み込んだ外部SWFをバイナリで扱うために、ForcibleLoaderをちょっと改造した。
ForcibleLoaderは一度バイナリで読み込んだ後、バイナリの値をあちこちをいじっている。
そして、いじったあとを再びLoaderにloadByteさせることで読み込ませているようだ。
そこで、バイナリの値をいじくったあとのバイナリ型SWFを保存させて・・・
後から取り出せるように変えた。
以下がそのソースである。
ForcibleLoader.as (改造Ver)

これでバイナリ型の外部SWFを扱えるようになった。
今度は、SharedObjectへの保存だが、参考サイトではString型で値をつなげて保存しているようである。
readStrでも使ってるのかな?
しかし、バイナリ型のデータは普通にインデックスアクセスもできる。
インデックスアクセスすると数値がでるので、それをArrayに保存することにした。
このほうが簡単でわかりやすい!
ちなみに、保存する前にcompressかけることによってサイズを小さくしてます(`・ω・´)
そして、保存した配列をSharedObjectに保存!
次にFlashを読み込んだときは、SharedObjectから逆の操作をして復元!
以下にソースを示す。
main.as

SwfToBynary.as

こんなかんじでSharedObjectに外部SWFを保存できました。
バイナリで読み込めればなんでもSharedObjectに保存できそうですね。
まいにち食べたい“ごはんのような”クッキーとビスケットの本

  • このエントリーをはてなブックマークに追加
  • Pocket
PAGE TOP ↑