
最近また AIR が楽しい気がして触っているのですが、 Google で AIR 関連記事を探すと、 AIR beta 版の頃(または Apollo だった頃)の記事が上位にきて、すでに廃止された作法、API を使っていたりするのでちょっと困っています。
自分の中で整理するために、しばらくこのブログで基礎的な AIR の記事をアップしていきます。というか割と AIR 忘れたのでメモです。
まずは基本のドラッグアンドドロップ。
ちなみに Flash CS4 (CS3) で作っているという想定です。
デスクトップとかからファイルをステージ上に配置した MovieClip インスタンス「droparea」にドラッグアンドドロップする方法です。
// MovieClip インスタンスに MouseEvent のように NativeDragEvent を設定
droparea.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, nativeDragEnterHandler);
droparea.addEventListener(NativeDragEvent.NATIVE_DRAG_EXIT, nativeDragExitHandler);
droparea.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, nativeDragDropHandler);
// ドラッグしたまま droparea の上に来たとき
function nativeDragEnterHandler(event:NativeDragEvent):void
{
droparea.alpha = 0.6;
// ドラッグしているアイテムはファイルかどうか
var clipboard:Clipboard = event.clipboard;
if (clipboard.hasFormat(ClipboardFormats.FILE_LIST_FORMAT))
{
// droparea の上でのドロップを許可する
NativeDragManager.acceptDragDrop(droparea);
}
}
// ドラッグしたまま droparea から外れたとき
function nativeDragExitHandler(event:NativeDragEvent):void
{
droparea.alpha = 1.0;
}
// ファイルをドロップしたとき
function nativeDragDropHandler(event:NativeDragEvent):void
{
droparea.alpha = 1.0;
// ドロップしたアイテムを取り出す
var clipboard:Clipboard = event.clipboard;
var files:Array = clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
// ドロップしたアイテムのうち、一つめのファイル
var file:File = files[0];
trace(file.name);
}
ちなみに複数の File インスタンスを得るには最後の取り出しのところを、
for each (var file:File in files)
{
trace(file.name);
}
for each は楽ちんですね。

