クリップボードのデータを拾ってみる
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;
}
}


