BitmapDataをBase64変換-1

技術的な確認のための習作です。
確認したかったのは、SWFで生成されたBitmapDataを共有オブジェクトでローカルに保持出来るかどうかでした。結果としてはもちろん出来ましたね。[PNGEncoder.as, Base64.as を利用]

ペンで適当に描いてから、saveでローカルに、loadで呼び出します。saveしたものはリロードしてもloadで呼び出せます。
※save時に書き込むデータの容量についての注意がでるはずですが、気にしない方のみ。
If you can see this, then you might need a Flash Player upgrade or you need to install Flash Player if it's missing. Get Flash Player from Adobe.

public function saveDraw(event:Event):void {
     canvasW = canvas.width;
     canvasH = canvas.height;
     my_so=SharedObject.getLocal("superfoo");
     var image:ByteArray = encodeDisplay(canvas);
     var imageString:String = Base64.encodeByteArray(image);
     my_so.data.canvasData=imageString;
     my_so.data.canvasW=canvasW;
     my_so.data.canvasH=canvasH;
     my_so.flush();
}
public function loadDraw(event:Event):void {
     my_so=SharedObject.getLocal("superfoo");
     canvasW=my_so.data.canvasW;
     canvasH=my_so.data.canvasH;
     canvasData=new BitmapData(canvasW, canvasH);
     var dx=(stage.stageWidth-canvasW) / 2;
     var dy=(stage.stageHeight-canvasH) / 2;
     var decoded:String=my_so.data.canvasData;
     var decodedBytes:ByteArray = Base64.decodeToByteArray(decoded);
     var rect:Rectangle = new Rectangle(dx, dy, canvasW, canvasH);
     canvasData.setPixels(rect, decodedBytes);
     var bmp=new Bitmap(canvasData);
     if (transcript == null) {
          transcript=new Sprite  ;
          transcript.x=dx;
          transcript.y=dy;
          addChild(transcript);
          setChildIndex(transcript,0);
     }
     transcript.addChild(bmp);
}

かなり適当。

Category: as3, flash

Date posted:2008-09-22