この記事のURL

http://www.dango-itimi.com/blog/archives/2006/000897.html


FLASH tips ActionScript3 PngEncoderクラス,JPEGEncoderクラス を用いてステージデータ画像化

せっかくActionScript3を勉強するならば、ActionScript3でのみできることを行うべきだ、というわけで、ActionScript2まででは結構大変だった swf画面の画像化を実装。
海外で公開されている、PngEncoderクラス または JPEGEncoderクラス を用いて実現します。

■サンプル

※要FlashPlayer9

ChangeImageボタンをクリックすると、その時点の画面表示を画像化します。画面が切り替わるので、ブラウザの戻るでお戻りください。


■PngEncoderクラス,JPEGEncoderクラスのソースはこちら

KAOURANTIN.NET
 PngEncoderクラス
 JPEGEncoderクラス

公開されている PngEncoderクラスと JPEGEncoderクラス 両方ともに少し古く、少し変更しなくては動かないので注意が必要です。

・package の util を utils に変更
・変数重複宣言箇所が多く 警告が嫌ならば全て重複しないような変数名へ修正
・JPEGEncoder.as内にある BitStringクラスは別ファイルに移動しないとパブリッシュが通らない?
 → BitString.as ファイルを作成し、そこにBitStringクラスを書く
・PNGEnc.as内の shrメソッドを呼び出している箇所は そのようなメソッドはないので以下のように変更

//uint(((p&0xFFFFFF) << 8)|(shr(p,24))));
uint(((p&0xFFFFFF) << 8) | ((p >>> 24))));


全体的な大まかな処理内容としましては、ステージ上の表示をdrawした BitmapDataインスタンス を PngEncoderクラス,JPEGEncoderクラスを用いて ByteArrayインスタンスへ変換し、そのデータをCGIへ送信して画像表示を行います。

よくわからなかった点は、ByteArrayインスタンスの情報をどのようにCGIへ送信したらいいかという点と、送信されたデータをCGIでどのように受信したらいいか、いう点でした。しかしネットの情報を書き漁り、なんとか動くものができました。

まず ByteArrayインスタンスの情報は、URLReuestインスタンスのdataプロパティへ直に設定します。送信されたデータをCGIから受信する方法は以下のサンプルを参考ください。

Sample.as
fla.txt (ダウンロード後 拡張子を txt から cgi へ変更)

[ FLASH ] [ tips ] 投稿者 siratama : 2006年07月11日 00:11

トラックバック

http://www.dango-itimi.com/blog/mt-tb.cgi/857

コメント

ActionScript3はいろんなことができるんですね!

ボタンをクリックすると、画像ファイル(pngなど)をダウンロードできるようにしてみたいのですが・・・
そういうこともできるのでしょうか・・・?

投稿者 j : 2007年02月10日 17:31

以下コメントを書き込むだけでは、管理人には通知が行われません。通知を行いたい場合、管理人の書き込みに「返信」を押してコメントをしていただくか、あるいは Google+, Twitter へご連絡ください。




[EDIT]