呼び出した後DragManager.acceptDrag
、ドラッグを「受け入れない」方法はありますか? ドラッグアンドドロップを受け入れることができるビューがあるとしますが、特定の領域のみです。DragManager.acceptDrag(this)
ユーザーが(ハンドラーから)呼び出したこれらの領域の1つをドラッグすると、ユーザーがこの領域から移動した場合、ドラッグのステータスを受け入れられないに変更し、フィードバックDragEvent.DRAG_OVER
を表示したいと思います。DragManager.NONE
ただし、呼び出しDragManager.acceptDrag(null)
もDragManager.showFeedback(DragManager.NONE)
効果もないようです。ドラッグを受け入れてフィードバック タイプを設定すると、変更できないようです。
明確にするために: ユーザーがドロップできる領域は、コンポーネントでも表示オブジェクトでもありません。実際には、テキスト フィールドのテキスト内の範囲 (選択など) にすぎません。それらが独自のコンポーネントであった場合、それぞれが個別にドラッグ イベントを受け入れるようにすることで解決できたはずです。テキストの上に浮かぶプロキシ コンポーネントを作成してエミュレートすることもできると思いますが、それが必要でない場合は、そうしたくありません。
現在、AIR とブラウザーの両方で動作させることができましたが、それは、オブジェクトをドロップできるはずのテキスト範囲の上にプロキシ コンポーネントを配置することによってのみでした。そうすれば、正しいフィードバックが得られ、ドロップはドラッグ終了時に自動的に受け入れられなくなります。
これは、AIR での D&D の最も奇妙な点です。
DragManager.doDrag(initiator, source, event, dragImage, offsetX, offsetY);
ブラウザベースの Flex ではoffsetX
、offsetY
負の値にする必要があります (ドキュメントにはそう書かれていますが、問題なく動作します)。ただし、まったく同じコードを AIR で実行する場合は、オフセットを正にする必要があります。同じ数字ですが、プラスです。それは非常に奇妙です。
@maclemaが機能するものをさらにテストしましたが、AIR で実行した場合はテストしませんでした。AIRでのドラッグ&ドロップは違うようです。フィードバックが正しく表示されないだけでなく、受け入れを取り消すことができないだけでなく、座標も完全にオフになっているため、本当に、本当に奇妙です。AIR ではなくブラウザでアプリケーションを試したところ、ドラッグ アンド ドロップが完全に機能しません。
また、dragEnter
ハンドラーをスキップすると、AIR では問題なく動作しますが、ブラウザーで実行するとすべてが壊れます。