| パッケージ | flash.desktop |
| クラス | public class NativeDragManager |
| 継承 | NativeDragManager Object |
| ランタイムバージョン: | AIR 1.0 |
次の種類のデータを転送できます。
- ビットマップ
- ファイル
- テキスト
- URL ストリング
- 直列化されたオブジェクト
- オブジェクト参照(元のアプリケーション内でのみ有効)
注意:すべての NativeDragManager メンバーが静的メンバーです。このクラスのインスタンスを作成する必要はありません。
ドラッグ&ドロップ操作は、ユーザーが表示されたアイテムをクリックして別の場所にドラッグすると開始される、ユーザーインターフェイスのジェスチャです。ドラッグジェスチャを実行している間、AIR アプリケーションウィンドウ内を移動するにつれて、表示リスト上のインタラクティブオブジェクトによってネイティブドラッグイベントが送出されます。これらのイベントのハンドラーで NativeDragManager クラスのメソッドを呼び出すと、ドラッグしたアイテムをオブジェクトにドロップできるかどうかを示すことができます。これに応答してマウスポインターが変わり、ユーザーにフィードバックが提供されます。
AIR プロファイルのサポート:この機能は AIR for TV デバイスではサポートされません。また、すべてのモバイルデバイスでサポートされません。NativeDragManager.isSupported プロパティを使用して、サポートされているかどうかを実行時にテストすることができます。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。
ドラッグアクション
通常、ドラッグ & ドロップジェスチャは、アクションと呼ばれる 3 種類の操作に使用されます。これらのアクションの意味はアプリケーションのコンテキストに応じて異なるため、ランタイムではアクションに対して特定の動作は適用されません。ただし、アクションを適切に実装すると、アプリケーションに対するユーザーの操作性が向上します。
実行可能なアクションは次のとおりです。
- copy — データのコピーを作成し、元のデータには変更を加えません(1 つのアプリケーション内でオブジェクトをドラッグする場合、元のオブジェクトへの参照ではなくそのオブジェクト自体をコピーするときは注意が必要です)。
- move — アイテムをあるリストから別のリストに移動する場合のように、元のコンテキストから、ドロップターゲットに定義されたコンテキストにデータを移動します。
- link — アイテムを元のコンテキスト内に残したまま、元のデータへの参照またはショートカットを作成します。
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() メソッドを呼び出すとセキュリティエラーが生成されます。
関連する API エレメント
flash.desktop.NativeDragActions
flash.desktop.NativeDragOptions
flash.desktop.Clipboard
| プロパティ | 定義元 | ||
|---|---|---|---|
![]() | constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | |
| dragInitiator : InteractiveObject [静的] [読み取り専用]
ドラッグ操作を開始した NativeDragManager.doDrag() 呼び出しに渡されるインタラクティブオブジェクトです。 | NativeDragManager | ||
| dropAction : String [静的]
ドロップターゲットによって指定されているドラッグアクションです。 | NativeDragManager | ||
| isDragging : Boolean [静的] [読み取り専用]
ドラッグ操作が現在進行中かどうかを報告します。 | NativeDragManager | ||
| isSupported : Boolean [静的] [読み取り専用]
現在のプラットフォームで NativeDragManager クラスがサポートされている場合、isSupported プロパティは true に設定されます。サポートされていない場合は、false に設定されます。 | NativeDragManager | ||
| メソッド | 定義元 | ||
|---|---|---|---|
[静的]
指定されたターゲットのインタラクティブオブジェクトが現在のドラッグイベントに対応するドロップを受け入れ可能であることを、NativeDragManager オブジェクトに通知します。 | NativeDragManager | ||
doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void [静的]
ドラッグ&ドロップ操作を開始します。 | NativeDragManager | ||
![]() |
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | |
![]() |
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | |
![]() |
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | |
![]() |
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | |
![]() |
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | |
![]() |
指定されたオブジェクトのストリング表現を返します。 | Object | |
![]() |
指定されたオブジェクトのプリミティブな値を返します。 | Object | |
dragInitiator | プロパティ |
dragInitiator:InteractiveObject [読み取り専用] | ランタイムバージョン: | AIR 1.0 |
ドラッグ操作を開始した NativeDragManager.doDrag() 呼び出しに渡されるインタラクティブオブジェクトです。
実装
public static function get dragInitiator():InteractiveObject dropAction | プロパティ |
dropAction:String| ランタイムバージョン: | AIR 1.0 |
ドロップターゲットによって指定されているドラッグアクションです。
dropAction プロパティは、nativeDragDrop イベントのハンドラーに設定する必要があります。dropAction が nativeDragComplete よりも前に設定されていない場合、NativeDragManager はこの値を copy、move、link の順序のリストで最初に許可されているアクションに設定します。
実装
public static function get dropAction():String public static function set dropAction(value:String):void関連する API エレメント
isDragging | プロパティ |
isSupported | プロパティ |
acceptDragDrop | () | メソッド |
public static function acceptDragDrop(target:InteractiveObject):void| ランタイムバージョン: | AIR 1.0 |
指定されたターゲットのインタラクティブオブジェクトが現在のドラッグイベントに対応するドロップを受け入れ可能であることを、NativeDragManager オブジェクトに通知します。
このメソッドは、指定されたターゲットオブジェクトに、ドラッグしたアイテムの少なくとも 1 つのデータ形式および少なくとも 1 つの許可されたアクションを処理できる nativeDragDrop ハンドラーがある場合にのみ呼び出す必要があります。
この機能は、nativeDragEnter イベントハンドラーまたは nativeDragOver イベントハンドラー内からのみ呼び出すことができます。
パラメーター
target:InteractiveObject |
doDrag | () | メソッド |
public static function doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void| ランタイムバージョン: | AIR 1.0 |
ドラッグ&ドロップ操作を開始します。
ドラッグ操作を開始するには
- 新しい Clipboard オブジェクトを作成します。
- 転送するデータを 1 つ以上の形式で追加します。
- オプションで、ドラッグ中にプロキシイメージとして機能する BitmapData オブジェクトを作成します。
- オプションで、この操作で許可するアクションを制限する NativeDragOptions オブジェクトを作成します (
allowedActionsパラメーターをnullのままにすると、すべてのアクションが許可されます)。 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 の場合、すべてのアクションが許可されます。
|
関連する API エレメント
Tue Jun 12 2018, 10:34 AM Z
継承されるパブリックプロパティを隠す
継承されるパブリックプロパティを表示