Actionscript3 astro Flash

[astro filereference] astroでのFileReference

[`evernote` not found]
LINEで送る
Pocket

いやーすごいですね!astro!

ローカルへのファイル保存が可能だなんて!

実際は、FileReferenceはローカルファイルを読み込んで直接操作できるみたいですが、ひとまず今回は保存です。

 

サンプルはこちら。

(Flashサンプル。赤丸をクリックすると、保存ダイアログが現れて、適当な名前を入力してボタンを押すと、保存。)

注意点としては、同じファイル名で上書き保存しようとすると例外をはくらしいです。

(これはもしかすると僕のサンプルが悪いだけかもです。。)

corelibのJPGEncoderを使って、stageを画像として保存しています。

ようは、FileReferenceにsaveというメソッドができて、それを使うと保存できるよ、ということです。

ちなみに、保存できる形式は、

String, XML, ByteArrayらしいです。

今回のサンプルは、ByteArrayを使って保存しています。

 

ちなみにソースはこんなのです。

 

package
{
import com.adobe.images.*;
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.ByteArray;
public class main extends MovieClip
{
private var jpg:JPGEncoder = new JPGEncoder(100);
private var container:Sprite;
private var bmpdata:BitmapData;
private var btn:Sprite;
private var fr:FileReference;
public function main()
{
init();
}

private function init():void
{
//保存ダイアログを出すためのボタン。
btn = new Sprite();
btn.graphics.beginFill(0xff0000, 1);
btn.graphics.drawCircle( 0, 0, 10);
btn.graphics.endFill();
addChild(btn);
btn.width = btn.height = 10;
btn.x = btn.y = 320;
btn.addEventListener(MouseEvent.CLICK, onSave);
fr = new FileReference();
}
private function onSave(e:MouseEvent):void
{
bmpdata = new BitmapData(400, 400, true);
bmpdata.draw(stage);
var ba:ByteArray = new ByteArray();
// stageをBitmap化したものを、ByteArrayに変換。
ba = jpg.encode(bmpdata);
// 保存ダイアログを出す。
fr.save(ba, “astroSavedFile.jpg”);
}
}
}
いや、ほんとにastroはDynamic Sound Generationといい、すごい進化してますね。

 

One comment

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA