| パッケージ | flash.desktop |
| クラス | public class NativeDragManager |
| 継承 | NativeDragManager Object |
| ランタイムバージョン: | AIR 1.0 |
次の種類のデータを転送できます。
メモ : すべての NativeDragManager メンバーが静的メンバーです。このクラスのインスタンスを作成する必要はありません。
ドラッグ & ドロップ操作は、ユーザーが表示されたアイテムをクリックして別の場所にドラッグすると開始される、ユーザーインターフェイスのジェスチャです。ドラッグジェスチャを実行している間、AIR アプリケーションウィンドウ内を移動するにつれて、表示リスト上のオブジェクトによってネイティブドラッグイベントが送出されます。これらのイベントのハンドラは NativeDragManager クラスのメソッドを呼び出して、ドラッグされたアイテムをオブジェクトにドロップできるかどうかを示します。これに応答してマウスポインタが変わり、ユーザーにフィードバックが提供されます。
ドラッグアクション
通常、ドラッグ & ドロップジェスチャは、アクションと呼ばれる 3 種類の操作に使用されます。これらのアクションの意味はアプリケーションのコンテキストに応じて異なるため、ランタイムではアクションに対して特定の動作は適用されません。ただし、アクションを適切に実装すると、アプリケーションに対するユーザーの操作性が向上します。
実行可能なアクションは次のとおりです。
allowedActions パラメータを、ドラッグ操作を開始する NativeDragManager.doDrag() 呼び出しに指定することにより、実行可能なアクションをドラッグジェスチャに設定できます。allowedActions パラメータを指定しない場合は、すべてのアクションが許可されます。NativeDragEvent オブジェクトの allowedActions プロパティを使用すると、ドラッグ可能ターゲットで実行できるアクションを確認できます。また、実行できるのが互換性のないアクションのみのドロップを受け入れないようにできます(ただし、ランタイムでは適用できません)。
ドロップターゲットが単一のアクションのみを実装している場合、オブジェクトは NativeDragManager の dropAction プロパティを、nativeDragEnter イベントおよび nativeDragOver イベントの両方のハンドラで設定できます。ドロップの前にプロパティを設定することによって、ドラッグマネージャはマウスポインタを更新してサポートされるアクションを示すことができ、ユーザーが修飾キーを使用して互換性のないアクションを選択することを防止できます。指定されたアクションが実行できるアクションではない場合は、ターゲットが acceptDrop() メソッドを呼び出してもドロップは許可されません。
ドロップを受け入れる場合は、NativeDragManager.dropAction プロパティを設定することにより、ドロップ可能ターゲットが nativeDragDrop イベントに応答して選択したアクションを指定する必要があります。このアクションは、nativeDragComplete イベントで元の開始表示オブジェクトに通知されます。ドロップターゲットにアクションが設定されていない場合、許可されたアクションから copy、move、link の優先順位に従ってデフォルトのアクションが選択されます。開始オブジェクトは、選択されたアクションに応じて内部状態を更新する必要があります。
NativeDragActions クラスにアクション名のストリング定数が定義されます。
イベントの順序
NativeDragManager.doDrag() メソッド(mouseDown イベントハンドラ内または mouseMove イベントハンドラ内)を呼び出すことによりドラッグジェスチャが開始され、ユーザーの操作に応答して次のイベントシーケンスが実行されます。
nativeDragStart イベント — NativeDragManager.doDrag() が呼び出されると、このメソッドにパラメータとして渡されたインタラクティブオブジェクトが開始元オブジェクトとなって、nativeDragStart イベントが送出されます。nativeDragUpdate イベント : ドラッグが進行している間、開始元オブジェクトによって継続的に nativeDragUpdate イベントが送出されます。nativeDragEnter、nativeDragOver イベント - ドラッグジェスチャがインタラクティブオブジェクトの上を通ると、nativeDragEnter イベントが送出されます。ドラッグジェスチャがインタラクティブオブジェクトの上で止まっている間、継続的に nativeDragOver イベントが送出されます。これらのイベントのいずれかに応答して、ドロップ可能ターゲットとして機能するオブジェクトがイベントオブジェクトのプロパティをチェックし、ドロップを受け入れ可能かどうかを判断します。データ形式と許可されたアクションが適切な場合、これらのイベントのイベントハンドラで NativeDragManager.acceptDrop() を呼び出し、ドラッグターゲットとして機能する表示オブジェクト(通常、nativeDragEnter イベントまたは nativeDragOver イベントを送出したオブジェクト)に参照を渡す必要があります。これで、ユーザーはドラッグしたアイテムをターゲットにドロップすることができます。nativeDragExit イベント — ドラッグジェスチャがインタラクティブオブジェクトからなくなると、オブジェクトによって nativeDragExit イベントが送出されます。オブジェクトが NativeDragManager.acceptDrop() メソッドに対する前の呼び出しでドラッグターゲットとして指定されていた場合、その呼び出しは無効になり、ジェスチャが再びインタラクティブオブジェクトに入った場合は acceptDrop() をもう一度呼び出す必要があります。nativeDragDrop イベント — オブジェクトの上でユーザーがマウスボタンを離すと、ターゲット表示オブジェクトによって nativeDragDrop イベントが送出されます。このイベントのハンドラは、イベントオブジェクトの transferable プロパティのデータにアクセスできます。開始元オブジェクトで実行する必要のあるアクションを通知するには、NativeDragManager.dropAction プロパティを設定します。nativeDragComplete — ドラッグジェスチャの最後でユーザーがマウスボタンを離すと、開始元オブジェクトによって nativeDragComplete イベントが送出されます(ドロップ自体が完了したかどうか)。このイベントのハンドラは、イベントオブジェクトの dropAction プロパティをチェックして、リストからドラッグされたアイテムの削除など、内部のデータ状態に対して実行する必要のある変更があるかどうかを確認できます。dropAction が NativeDragActions.NONE の場合、ドラッグしたアイテムが適切なターゲットにドロップされなかったことを示します。アプリケーション間のジェスチャ
ドラッグジェスチャが AIR 以外のアプリケーションから AIR アプリケーションウィンドウに入った場合、nativeDragStart イベントまたは nativeDragComplete イベントを送出する開始元オブジェクトはありません。その他の点では、ジェスチャを実行中のイベントは、同じ AIR アプリケーション内で開始および終了するジェスチャと同じパターンに従って送出されます。
ドラッグジェスチャが AIR アプリケーションウィンドウの外に移動すると、nativeDragEnter イベント、nativeDragOver イベントまたは nativeDragDrop イベントを送出するターゲットオブジェクトはなくなります。開始元オブジェクトは引き続き nativeDragComplete イベントを送出し、ネイティブオペレーティングシステムによって設定されたドラッグアクションを通知します (ドロップが受け入れられなかった場合は none)。
ドラッグジェスチャがある AIR アプリケーションから別の AIR アプリケーションに移動すると、開始元オブジェクトとターゲット表示オブジェクトは、それぞれのアプリケーション内で通常と同じイベントを送出します。
情報の転送
ドラッグ & ドロップジェスチャの実行中に転送されるデータは Clipboard オブジェクトに格納されます。このデータオブジェクトは、NativeDragManager.doDrag() メソッドを使用して、ドラッグジェスチャを開始したドラッグ操作に追加されます。ドロップ可能ターゲットは、ネイティブドラッグイベントオブジェクトの clipboard プロパティを使用して Clipboard オブジェクトにアクセスできます。ドラッグ操作が一旦開始されると、Clipboard オブジェクトにアクセスできるのは NativeDragEvent のイベントハンドラだけになります。オブジェクトに対してその他のアクセスを行うと、ランタイムエラーが生成されます。
セキュリティについての考慮事項
開始元オブジェクトおよびターゲットオブジェクトのセキュリティサンドボックスに応じて、ドラッグされているデータへのアクセス方法が決まります。両方のオブジェクトが同じサンドボックス内にある場合は、すべての NativeDragEvent オブジェクトからデータにアクセスできます。一方、開始元オブジェクトとターゲットオブジェクトが異なるサンドボックス内にある場合、データにアクセスできるのは nativeDragDrop イベントのイベントハンドラ内のターゲットサンドボックスだけです。他のネイティブドラッグイベントハンドラは、イベントの clipboard プロパティで参照される Clipboard オブジェクトに引き続きアクセスし、利用可能なデータ形式を確認できますが、clipboard.getData() メソッドを呼び出すとセキュリティエラーが生成されます。
関連項目
| プロパティ | 定義元 | ||
|---|---|---|---|
![]() | constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。 | Object | |
[静的] [読み取り専用]
ドラッグ操作を開始した NativeDragManager.doDrag() 呼び出しに渡されるインタラクティブオブジェクトです。 | NativeDragManager | ||
[静的]
ドロップターゲットによって指定されているドラッグアクションです。 | NativeDragManager | ||
[静的] [読み取り専用]
ドラッグ操作が現在進行中かどうかを報告します。 | NativeDragManager | ||
![]() | prototype : Object [静的]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。 | Object | |
| メソッド | 定義元 | ||
|---|---|---|---|
[静的]
指定されたターゲットインタラクティブオブジェクトが現在のドラッグイベントに対応するドロップを受け入れ可能であることを、NativeDragManager オブジェクトに通知します。 | NativeDragManager | ||
[静的]
ドラッグ & ドロップ操作を開始します。 | NativeDragManager | ||
![]() |
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | |
![]() |
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | |
![]() |
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | |
![]() |
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | |
![]() |
指定されたオブジェクトのストリング表現を返します。 | Object | |
![]() |
指定されたオブジェクトのプリミティブな値を返します。 | Object | |
| プロパティ |
dragInitiator:InteractiveObject [読み取り専用] | ランタイムバージョン: | AIR 1.0 |
ドラッグ操作を開始した NativeDragManager.doDrag() 呼び出しに渡されるインタラクティブオブジェクトです。
public static function get dragInitiator():InteractiveObject| プロパティ |
dropAction:String| ランタイムバージョン: | AIR 1.0 |
ドロップターゲットによって指定されているドラッグアクションです。
dropAction プロパティは、nativeDragDrop イベントのハンドラに設定する必要があります。dropAction が nativeDragComplete よりも前に設定されていない場合、NativeDragManager はこの値を copy、move、link の順序のリストで最初に許可されているアクションに設定します。
public static function get dropAction():String public function set dropAction(value:String):void関連項目
| プロパティ |
isDragging:Boolean [読み取り専用] | ランタイムバージョン: | AIR 1.0 |
ドラッグ操作が現在進行中かどうかを報告します。
public static function get isDragging():Boolean| () | メソッド |
public static function acceptDragDrop(target:InteractiveObject):void| ランタイムバージョン: | AIR 1.0 |
指定されたターゲットインタラクティブオブジェクトが現在のドラッグイベントに対応するドロップを受け入れ可能であることを、NativeDragManager オブジェクトに通知します。
このメソッドは、指定されたターゲットオブジェクトに、ドラッグしたアイテムの少なくとも 1 つのデータ形式および少なくとも 1 つの許可されたアクションを処理できる nativeDragDrop ハンドラがある場合にのみ呼び出す必要があります。
この機能は、nativeDragEnter イベントハンドラまたは nativeDragOver イベントハンドラ内からのみ呼び出すことができます。
パラメータ
target:InteractiveObject |
| () | メソッド |
public static function doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void| ランタイムバージョン: | AIR 1.0 |
ドラッグ & ドロップ操作を開始します。
ドラッグ操作を開始するには
allowedActionsnull パラメータを のままにすると、すべてのアクションが許可されます)。NativeDragManager.doDrag() () を呼び出します。開始元オブジェクトは、このメソッドが呼び出された後に nativeDragStart イベント、ドラッグが進行中の間には nativeDragStart イベント、ユーザーがマウスボタンを離してドラッグジェスチャを終了したときに nativeDragComplete イベントを送出します。nativeDragComplete イベントのハンドラは、イベントの dropAction プロパティをチェックして、ドラッグ & ドロップ操作が正常に完了したかどうかを判断できます。dropAction が NativeDragActions.NONE の場合、ドラッグしたアイテムが適切なターゲットにドロップされなかったことを示します。
このメソッドは、mouseDown イベントハンドラまたは mouseMove イベントハンドラ内からのみ呼び出すことができます(mouseMove イベントに応答して呼び出す場合は、マウスボタンも押す必要があります)。
パラメータ
dragInitiator:InteractiveObject — 通常、ドラッグジェスチャを開始したオブジェクトです。nativeDragStart イベントと nativeDragComplete イベントを受け取ります。
| |
clipboard:Clipboard — ドラッグされているデータのコンテナオブジェクトです。
| |
dragImage:BitmapData (default = null) — ドラッグジェスチャの実行中にマウスカーソルの下に表示される、オプションのプロキシイメージです。null の場合、プロキシイメージは表示されません。
| |
offset:Point (default = null) — マウスホットスポットとドラッグイメージの左上隅の間のオフセットです。負の座標では、イメージが上方向の、ホットスポットを基準としてその左側に移動します。null の場合、ドラッグイメージの左上隅が、マウスホットスポットの位置に配置されます。
| |
allowedActions:NativeDragOptions (default = null) — この操作に許可されるドラッグ & ドロップアクションを制限します。null の場合、すべてのアクションが許可されます。
|
関連項目
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flex/3_jp/langref/flash/desktop/NativeDragManager.html