Home > AIR > [Tips][AIR]AIRアプリの外から中へのドラッグ&ドロップ

[Tips][AIR]AIRアプリの外から中へのドラッグ&ドロップ

  • 2007-07-15 (Sun) 5:18
  • AIR

まずはサンプル。

package{
  import flash.display.DisplayObject;
  import flash.display.Sprite;
  import flash.events.NativeDragEvent;
  import flash.desktop.DragManager;

  public class Main extends Sprite{
    private var drop_target:Sprite = new Sprite();

    public function Main(){
      drop_target.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, DaDEnterHandler);
      drop_target.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, DaDDropHandler);

      addChild(drop_target);
      changeColor(0x000000);
    }

    public function DaDEnterHandler(nde:NativeDragEvent):void{
      DragManager.acceptDragDrop(nde.target as DisplayObject);
      changeColor(0x888888);
    }

    public function DaDDropHandler(nde:NativeDragEvent):void{
      changeColor(0xFFFFFF);
    }

    private function changeColor(color:uint):void{
      drop_target.graphics.beginFill(color);
      drop_target.graphics.drawRect(0, 0, 100, 100);
      drop_target.graphics.endFill();
    }
  }
}

こんな感じ。

まずは、イベントハンドラ。

drop_target.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, DaDEnterHandler);
drop_target.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, DaDDropHandler);

これで、例えばデスクトップとかAIRアプリ外から、AIRアプリの中にドラッグされてきたものが、
DisplayObject上に乗ると、NATIVE_DRAG_ENTERイベントを受け取ることができるようになり、
ドロップされると、NATIVE_DRAG_DROPイベントを受け取ることができるようになる。

でもこのままだと、NATIVE_DRAG_DROPが発行されないっぽい。
ドロップ時にNATIVE_DRAG_DROPイベントを発行するには、

DragManager.acceptDragDrop(nde.target as DisplayObject);

これで指定してやる。
上のサンプルだったら、

DragManager.acceptDragDrop(drop_target);

でもOK。これで、ドロップのイベントもちゃんと発行される。
ちなみに、NativeDragEventはデフォルトではバブリングされない。
なので、acceptDragDropで指定したところ以外にはイベントは届かない。

それからDragManagerは同名のクラスがあって、
flash.desktop.DragManager

mx.managers.DragManager
だけど、AIRアプリの中からデスクトップへD&Dとか、
ブラウザからURLをAIRアプリにD&Dとかのときには、
flash.desktop.DragManagerを使う。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.jinten.net/blog/archives/9/trackback
Listed below are links to weblogs that reference
[Tips][AIR]AIRアプリの外から中へのドラッグ&ドロップ from Jinten Blog

Home > AIR > [Tips][AIR]AIRアプリの外から中へのドラッグ&ドロップ

Search
Google
Feeds
Meta
Advertisement

Return to page top