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 _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画像として保存することができます。