« AIR アプリケーションを作ってみて思ったこと | メイン | 今さら気づいたこと »
2007年9月10日
[as3] 外部SWFをSharedObjectに保存
先のエントリーで書いていたことが出来るか試してみたら、出来た。そのまんまなんだけど、バイナリ型で読み込んだSWFファイルを
一度 compress を実行した後、配列から1バイトずつ取り出して文字列として結合。
それを SharedObject に保存。
使うときはその逆。びっくりするほど簡単だった。
ByteArrayUtil というクラスとして作成しておいた。
各クラスファイルは以下にあります。
使用している自作クラス
・com.seyself.utils.ByteArrayUtil
・com.seyself.data.BinaryData
内部でもろもろクラスを使用しているので、試してみる場合はココからまるごとSVNで落としてもらった方がいいかも。
ByteArrayUtil クラスの使用例
import flash.display.Loader; import flash.utils.ByteArray; import flash.net.SharedObject; import com.seyself.data.BinaryData; import com.seyself.utils.ByteArrayUtil; var so:SharedObject = SharedObject.getLocal( "binary_to_string" ); //SharedObject にデータが保存されている場合 if( so.data.hasOwnProperty("savedata") ){ trace( "--load to local data" ); toStringCallback( so.data.savedata ); } //SharedObject にデータが保存されていない場合 else { trace( "--load to file data" ); var binaries:BinaryData = new BinaryData(); binaries.complete = loadComplete; binaries.load( "example.swf" ); //外部SWFファイルをバイナリ形式で読み込む } //変換中に呼び出される関数です。 var progress = function( parcent:Number ) { //parcent : Number - 現在の変換率が渡されます。 trace("completed convert percentage : "+parcent); } //外部からの読み込みが完了すると呼び出される関数です。 function loadComplete() { ByteArrayUtil.toString( binaries.bytes , toStringCallback, progress ); } //ByteArray から文字列への変換が完了したときに呼び出されます。 function toStringCallback( code:String ):void { so.data.savedata = code; ByteArrayUtil.toBinary( so.data.savedata , toBinaryCallback , progress ); } //文字列から ByteArray への変換が完了したときに呼び出されます。 function toBinaryCallback( binary:ByteArray ) { //Loaderインスタンスに、変換されたByteArrayを読み込ませる。 var loader:Loader = new Loader(); this.addChild( loader ); loader.loadBytes( binary ); }
投稿者 michi : 2007年9月10日 21:23
« AIR アプリケーションを作ってみて思ったこと | メイン | 今さら気づいたこと »
トラックバック
このエントリーのトラックバックURL:
http://system.seyself.com/mt-tb.cgi/117