
現場で使えるFlex実践テクニック(2) 2/2
Flexアプリの直感的なドラッグ&ドロップを体験しよう
クラスメソッド
成瀬 勉
2007/8/15
画像ファイルもドラッグ&ドロップできる
- - PR -
デフォルトでドラッグ&ドロップをサポートしていないコントロールに、新たにドラッグ&ドロップ機能を追加する場合や、異なるコントロール間で行う場合には、“DragManager”を利用します。
まずは、サンプルを見てみましょう。
このサンプルは画像を下部の桃色のエリアにドラッグすると、その画像がエリアに追加されるサンプルです。
| サンプル3 画像をドラッグして追加する |
少し長くなりますが、ソースコードも確認してみましょう。
| Sample3.mxml |
<?xml version="1.0" encoding="utf-8"?> |
ドラッグ&ドロップという操作は、マウスを押下したとき、マウスがコンポーネント上に来たとき、コンポーネントにドロップされたとき、などの一連のイベントの流れがあります。
それぞれのタイミングで発生するイベントと処理の手順は以下のとおりになります。
■ 【1】mouseDown −
ドラッグイニシエータとなる画像上でマウスを押下する
ここでは、ドロップターゲットに渡されるデータとそのフォーマット、およびドラッグ中のイメージを作成し、ドラッグを開始します。
まず、DragSourceを作成します。DragSource.addData()で、ドロップターゲットに渡すデータとフォーマットを指定します。ここでは参照元の画像へのパスを「img」というフォーマットとして渡します。フォーマットは任意の名前です。後で、この名前で渡したデータを取得します。
次に、ドラッグ中のイメージを作成します。ここでは画像のビットマップデータを取得し、imageProxyとして作成します。
最後に、DragManager.doDrag()を実行します。ここでは上記で作成したデータを渡します。
■ 【2】dragEnter −
ドラッグして、ドロップターゲット上へマウスを移動する
ドロップターゲットにドラッグされたときにdragEnterイベントが発生します。ここでは、渡されたデータによって、ドラッグを受け付けるかどうかを判断し、ドロップターゲットでドロップを受け付けられる状態にします。
今回は、特に渡されたデータの判断はしていませんが、通常はdragEnterイベントのdragSourceからドラッグで渡されたデータが、受け付けられるデータかどうかをフォーマットから判断します。これは複数のコントロールで異なるドラッグデータを扱う際に必要になります。
ドロップターゲットでドロップを許可するには、DragManager.acceptDragDrop()に対象のコントロールを渡します。この時点で、マウスカーソルがドロップ可能なアイコンに変化します。
■ 【3】dragOver −
ドロップを許可された状態でドラッグされたとき
ドロップターゲットでドロップが許可された後、ドロップターゲットにマウスを移動した際にdragOverイベントが発生します。
このイベントはオプションであり、特に指定しなくても構いませんが、ここではドロップターゲットの枠線のスタイルを変更して、ドロップができる状態であることを視覚化しています。
■ 【4】dragExit −
ドロップを許可された状態でドラッグアウトされたとき
ドロップターゲットでドロップが許可された後、ドロップターゲットからマウスが離れた際にdragExitイベントが発生します。
このイベントはオプションであり、特に指定しなくても構いませんが、ここではドロップターゲットの枠線のスタイルを変更して、ドロップできる状態ではなくなったことを視覚化しています。
■ 【5】dragDrop −
ドロップを許可された状態でドロップされたとき
ドロップターゲットでドロップが許可された後、マウスをリリースしてドロップ操作が実行されたときにdragDropイベントが発生します。
ここでは、ドラッグイニシエータから渡されたDragSourceを基にImageを作成し、ドロップターゲットに追加する処理を行っています。
■ 【6】dragComplete −
ドラッグ&ドロップ操作が完了したとき
ドラッグ&ドロップ操作が正しく実行されたときに、ドラッグイニシエータでdragCompleteイベントが発生します。
ここでは、操作完了後のクリーンアップを行います。また、データのコピーではなく移動を行う場合は、この段階で元データを削除します。
AIRのドラッグ&ドロップも試してみよう
ドラッグ&ドロップでは直感的な操作が可能になりますが、ドラッグ&ドロップ操作ができるのかどうかをユーザーに伝えることがいささか困難であることと、ドラッグ&ドロップの操作自体がユーザーに比較的精密な操作を要求する点に注意が必要です。
またAIRでは、AIRアプリケーションとOS間でのドラッグ&ドロップをサポートしているため、さまざまな利用方法が実現できます。詳しくは「AIRアプリはドラッグ&ドロップでこんなことまで!」を参照してください。
次回は、データグリッドおよびリスト系コンポーネントの使用方法の解説をします。
■@IT関連記事
Flex2でWebアプリ開発これまで3週間かかっていたWebアプリのモック開発工程を、3日に短縮できたというFlex2の体験版をダウンロードして簡単アプリを作ってみよう
最終更新 2007/4/18
|
Flexのクライアントサイドをオープンソースで制覇する大規模なWebアプリケーションを大人数で開発するときに便利なFlexのクライアントサイドのフレームワークを紹介
最終更新 2006/10/13
|
| Eclipseで開発可能になったAdobe Flex 2 リッチクライアント・プロダクトレビュー 今年登場するAdobe Flex 2はEclipseプラグインを開発環境とするリッチクライアントフレームワークに生まれ変わった 「リッチクライアント & 帳票」フォーラム 2006/4/8 |
||
Flashベースのリッチクライアントを体験XMLタグでFlashベースのユーザーインターフェイスを構築できるMacromedia Flexを6回の連載で体験・評価します
最終更新 2005/12/14
|
プロフィール:成瀬 勉(なるせ つとむ) クラスメソッド株式会社での主な開発実績は、旭化成の電子ファイリングシステム、ひまわり証券のオンライントレードシステム、ベルシステム24の営業支援システムなど。 |
| |
1-2 | 全記事一覧へ |
| INDEX | ||
| 現場で使えるFlex実践テクニック(3) Flexアプリの直感的なドラッグ&ドロップを体験しよう |
||
| Page1 Flexはドラッグ&ドロップ機能も簡単に実現!/例として、Listコントロールでドラッグ&ドロップ |
||
| Page2 画像ファイルもドラッグ&ドロップできる/AIRのドラッグ&ドロップも試してみよう |
||
現場で使えるFlex実践テクニック バックナンバー
TechTargetジャパン
- NFCやLTE対応予定のiPhoneと、先行するAndroid (2012/2/9)
iPhoneとAndroid、そしてWindows Phoneという3つのOSの今後を占う。それぞれの通信規格とコンセプトは? - 家電のUIになるブラウザ (2012/2/3)
未来の家電はインターネットに接続でき、ブラウザが内蔵されてくる。家電にブラウザが載ったらどうなるか? 未来のホームネットワークを想像しよう - 「汎用のUI技術」として広がるHTML5 (2012/2/2)
すさまじい勢いで成長しているHTML5を中心としたオープンなWebプラットフォーム。HTML5やAPI、Webブラウザのアップデート情報をお伝えする - ビヨンド・クールジャパン!? (2012/1/27)
コンテンツという文化力と、ものづくりという技術力を掛け合わせる。両方を国内に持ち合わせている国は多くない。チャンスなのだ
|
|

