« うっかり限界突破 | メイン | PrintScreenした画像をAIRで表示させてみる »

クリップボードのデータを拾ってみる

Adobe Apollo が正式名称 AIR として公開されました。
同時に FlexBuilder3 のパブリックベータ版も公開されたので、追加された機能をふんだんに使った AIR アプリが続々と出てくると思います。


今回新たに追加された機能の中で特に注目すべきはデータベースモジュールでしょう。
flash.data パッケージ以下に SQL 関連クラスがごっそり入っていますが、ざっと目を通しただけでもかなり充実している模様。
このタイミングで入ってくるとは思っていなかったのですが、先日公開された Google Gears でローカルデータベースの機運が高まりつつあるので、それに合わせてきた感じがしないでもありません。

とにかく弄ってみたい機能が目白押し。
前々から気になっていたドラッグアンドドロップやクリップボード管理のドキュメントを真っ先にチェックしてみました。
たとえばクリップボードのデータを拾うには以下のように書きます。


ClipboardManager.accessClipboard( onAccessClipboard );


private function onAccessClipboard():void {
var data:TransferableData = ClipboardManager.data;
var text:String = data.dataForFormat( TransferableFormats.TEXT_FORMAT ) as String;
}

いつでもクリップボードのデータにアクセスできるわけではなく、処理を記述したクロージャメソッドを引数として ClipboardManager.accessClipboard メソッドを実行することで初めてアクセスできるようになります。

データは TransferableData 型としてClipboardManager.data に格納されていますが、中身がテキストだったり画像データだったりするので dataForFormat メソッドによってフォーマット指定する必要があります。


また、逆にクリップボードに文字列データをペーストする場合は上記のクロージャ内に


var data:TransferableData = new TransferableData();
data.addData("hoge", TransferableFormats.TEXT_FORMAT );
ClipboardManager.data = data;

といった処理を記述します。


ヘルプにわざわざクロージャと書かれているのが気になったのですが、任意の文字列をクリップボードにペーストしようとする際に ClipboardManager.accessClipboard の引数に直接指定ができないので、下記のようなクロージャ生成メソッドを用意してねという意味なんだと思います。

ClipboardManager.accessClipboard( pasteString("hoge") );
private function pasteString( str:String ):Function {
	return function():void {
		var data:TransferableData = new TransferableData();
		data.addData( str, TransferableFormats.TEXT_FORMAT );
		ClipboardManager.data = data;
	}
}

トラックバック

このエントリーのトラックバックURL:
http://void.heteml.jp/mt/mt-tb.cgi/53

コメントを投稿

あわせて読みたい