ユーザーがビジュアルコンポーネントの境界内にクリップボードオブジェクトをドラッグすると、そのコンポーネントによって
nativeDragEnter
イベントと
nativeDragOver
イベントが送出されます。これらのイベントのハンドラーでは、イベントオブジェクトの
clipboard
プロパティと
allowedActions
プロパティを調べて、コンポーネントがクリップボードアイテムを受け入れ可能かどうかを確認できます。イベントハンドラーでは、コンポーネントがドロップを受け入れ可能であることを通知するために、
NativeDragManager.acceptDragDrop()
メソッドを呼び出して、ドロップ先のコンポーネントに参照を渡す必要があります。複数の登録済みイベントリスナーが
acceptDragDrop()
メソッドを呼び出した場合、リストの最後のハンドラーが優先されます。
acceptDragDrop()
メソッドは、マウスがドロップ先オブジェクトの境界から離れて
nativeDragExit
イベントが発生するまで有効のままです。
doDrag()
に渡される
allowedActions
パラメーターで複数のアクションが許可されている場合、ユーザーは、修飾キーを押すことで、実行するアクションを指定できます。ドラッグマネージャーは、ドロップが完了した場合に実行されるアクションをユーザーに通知するために、カーソルのイメージを変更します。目的のアクションは、NativeDragEvent オブジェクトの
dropAction
プロパティで報告されます。ドラッグジェスチャのアクションセットは報告のみです。移動に関連するコンポーネントには、適切な動作を実装する必要があります。例えば、移動アクションを完了するために、ドラッグイニシエータがドラッグされたアイテムを削除し、ドロップターゲットがそのアイテムを追加する場合があります。
NativeDragManager クラスの
dropAction
プロパティを設定することで、ドラッグターゲットのドロップアクションを、実行可能な 3 つのアクションのいずれかに制限できます。ユーザーがキーボードを使用して別のアクションを選択しようとした場合、NativeDragManager によって
使用不可
カーソルが表示されます。ハンドラーの
dropAction
プロパティを
nativeDragEnter
イベントと
nativeDragOver
イベントの両方に設定します。
次の例は、
nativeDragEnter
イベントまたは
nativeDragOver
イベントのイベントハンドラーを示しています。ドラッグ中のクリップボードにテキスト形式のデータが含まれている場合、このハンドラーはドラッグインジェスチャのみを受け入れます。
import flash.desktop.NativeDragManager;
import flash.events.NativeDragEvent;
public function onDragIn(event:NativeDragEvent):void{
NativeDragManager.dropAction = NativeDragActions.MOVE;
if(event.clipboard.hasFormat(ClipboardFormats.TEXT_FORMAT)){
NativeDragManager.acceptDragDrop(this); //'this' is the receiving component
}
}