AS3のflash.utils.ByteArrayを使いこなせるようになりたいとテストしています。
Adobe - Developer Center 2008-09-28の記事 Saving Flash graphics as image files at runtimeにソースファイル付きでサンプルがあったのでありがたく試してみる。
サンプルは入力したテキストごとMovieClipをキャプチャした後、JPGかPNGに変換して、サーバーのPHPにデータを送り
・再度読み込む
・ダウンロードする
・ブラウザの別ウインドウに表示する
が行えるようになっている。
サーバー側のPHPは単にデータを返すだけで、これで画像を生成していない。
画像生成処理まですべてFlash側でできることがスゴイ。
Diretorだとサードパーティーのextraを使わないといけないところ・・・
ByteArrayの他に以下のライブラリを使う。
Adobeの corelib。
dynamicflash.comの com.dynamicflash.util.Base64。
ActionScript 3.0 Base64 encoder/decoder にも少し解説が。
Base64作者のSteve WebsterさんはYahoo UKのWeb DeveloperでFoundation ActionScript 3.0 with Flash CS3 and Flex 著書の一人。
【手順】
- キャプチャしたい矩形をgetBoundsで取得
- 矩形サイズのBitmapDataをつくりキャプチャ元を複製
- corelibの JPGEncoder, PNGEncoder でByteArrayへエンコード
- ByteArrayをBase64でString型へ
- サーバーへPOST送信
サンプルソースのSnapshot.as
options.loader.load(request);
を
var ldr:Loader = new Loader();
ldr.load(request);
options.loader.removeChildAt(0);
options.loader.addChild(ldr);
へ修正。
AIRならサーバーなしで単体でできそう。。
Actionscript3, corelib
