« PixelBenderでカスタムフィルタ(セピア) | トップページ | FlashPlayer10 テキストファイルを開く、保存する »

2008年5月27日 (火)

FlashPlayer10 ファイルを直接保存

FlashPlayer10からローカルに直接ファイルを保存できるようになったのでテスト。

ファイル操作は今までと同様FileReferenceを使います。(初めて使う。。)
今まではサーバーへアップロードするくらいの機能だったと思うけど、新しく
loadとsaveというメソッドが追加されて、ローカルのファイルを直接開いたり、
直接書き込んだりすることができます。
今回はsaveを使います。

saveはドキュメントによるとこう書いてあります。

function save(data:*, defaultFileName:String = null):void

第1引数で保存するデータを渡します。型はなんでもいいっぽいですが今回は普通にStringを渡してみます。
第2引数は保存するファイル名の初期値です。保存の際にユーザーが書き換えることができます。省略可です。

private function _save(data:ByteArray, defaultFileName:String)
となってるのでデータはやっぱりByteArrayに変換されてから保存されるんですね。

ソースは以下のとおり。
最初「OPEN」とかのイベントを設定しなかったらPlayer落ちた。

package  {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.net.FileReference;
	import flash.events.*;
	import flash.text.TextField;
	import flash.text.TextFieldType;
	public class Main extends Sprite{
		private var txt:TextField;
		public function Main() {
			//テキスト入力
			txt = new TextField();
			txt.width = 400;
			txt.multiline = true;
			txt.text = "ここにテキストを入力。\n入力したら下の黒い四角をクリックすると保存します。";
			txt.border = true;
			txt.type = TextFieldType.INPUT;
			txt.x = 20;
			txt.y = 20;
			addChild(txt);
			
			//保存ボタン
			var bd:BitmapData = new BitmapData(120, 60, false, 0x000000);
			var bm:Bitmap = new Bitmap(bd);
			var mc:Sprite = new Sprite();
			mc.addChild(bm);
			mc.x = 20;
			mc.y = 200;
			addChild(mc);
			mc.buttonMode = true;
			mc.addEventListener(MouseEvent.CLICK, saveFile);			
		}
		private function saveFile(e:MouseEvent):void {
			var ff:FileReference = new FileReference();
			ff.addEventListener(Event.OPEN, function(e:Event):void { trace("open");  } );
			ff.addEventListener(ProgressEvent.PROGRESS, function(e:ProgressEvent):void { trace("progress");  } );
			ff.addEventListener(Event.COMPLETE, function(e:Event):void { trace("complete");  } );
			ff.addEventListener(Event.CANCEL, function(e:Event):void { trace("cancel");  } );
			ff.addEventListener(Event.SELECT, function(e:Event):void { trace("select");  } );
			ff.addEventListener(IOErrorEvent.IO_ERROR, function(e:IOErrorEvent):void { trace("ioError");  } );
			ff.save(txt.text,"saveTextTest.txt");

		}
	}
	
}

|

« PixelBenderでカスタムフィルタ(セピア) | トップページ | FlashPlayer10 テキストファイルを開く、保存する »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: FlashPlayer10 ファイルを直接保存:

« PixelBenderでカスタムフィルタ(セピア) | トップページ | FlashPlayer10 テキストファイルを開く、保存する »