21.ムービーをJPEGで保存する2

クリックで「名前を付けて保存」画面

FLASHムービー上のボタンをクリックすると、「名前を付けて保存」画面が出てきて保存させたいわけですが、、、

いろいろ調べてると行き着いたのが、FLASH8だけどみつかりました(参考記事1)。

FileReferenceクラス、、、そんなのがあるんだ〜、と思いリファレンスを見るとAS3でも同名のクラスがありますやん!(参考記事2)

download()メソッドのところをみると、例もありました。

ということで、前頁のありがたいスクリプトとこの例を組み合わせて、動くものができました。

スクリプトの例

aaddEventListenerで、ボタンをクリックされた時に呼び出されるのが_clickとします。

不要な部分を除いたスクリプト例は下のような感じです。

//ボタンをクリックした場合の処理
var fileRef:FileReference = new FileReference();
function _click(evt:MouseEvent):void {
var myBitmapData:BitmapData =
new BitmapData(100,200);//欲しい画像のサイズ
myBitmapData.draw(stage);//全体が欲しいので
var jpgEncoder:JPGEncoder = new JPGEncoder(80);
var byteArr:ByteArray = jpgEncoder.encode(myBitmapData);
var phpPath:String = "xxx.php";
var urlRequest:URLRequest = new URLRequest(phpPath);
var urlLoader:URLLoader = new URLLoader();
urlRequest.contentType = "application/octet-stream";
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = byteArr;
urlLoader.load(urlRequest);
urlLoader.addEventListener(Event.COMPLETE,onUpload);

function onUpload(event:Event):void{
var imgDir:String="image/";
var fileName:String = urlLoader.data;
var fn:String="photo.jpg";
var downloadName:URLRequest=new URLRequest(imgDir+fileName);
fileRef.download(downloadName, fn);
}
}

なぜか、var fileRef:FileReference = new FileReference();をfunctionの中に入れると動作しないのですが、、、

とりあえず、希望の動作を得ることができました。

↓実際に使ってみたのがこちら。

赤ちゃんの成長曲線

トップページにあるグラフ右下のボタンをクリックすると、FLASHで作成したグラフをJPEG画像として保存することができます。

→22.ApplicationDomainクラスを使う1

21.ムービーをJPEGで保存する1←