0

私はAIRで働いています。

1つはリスト(用語集)で、もう1つはデータグリッドと編集可能なセルでウィンドウ化する必要があります。目標は、リスト上のアイテムをドラッグして、itemEditor (データグリッド) のカーソル位置にドロップすることです。私はそれを行う方法がわかりません。

これは、データグリッドではなく、同じデータグリッドウィンドウにあるテキストエリアで同じアクションを実行するために使用するコードの下にあります。

// 最初のウィンドウ (用語集)

<s:List dataProvider="{DP_GlossList2}" id="list2"
                            labelField="glNom"
                            dragEnabled="true"
                            dropEnabled="true"
                            dragMoveEnabled="true"
                            click="list2_clickHandler(event)"
                            height="60%" width="100%"/>

// 2 番目のウィンドウ: textarea と datagrid

// ドラッグドロップ

 protected function retTTAfaire_dragDropHandler(event:DragEvent):void
        {
            retTTAfaire.text = retTTAfaire.text.substring(0,retTTAfaire.selectionAnchorPosition)+ " "+event.dragSource.dataForFormat("itemsByIndex")[0].glNom+
                " "+retTTAfaire.text.substring(retTTAfaire.selectionAnchorPosition+1);
        }

        protected function retTTAfaire_dragEnterHandler(event:DragEvent):void
        {
            DragManager.acceptDragDrop(spark.components.TextArea(event.target));

        }

私を助けてください。ありがとう

4

1 に答える 1

0

正確な答えはわかりませんが、調査すべき領域の 1 つは、getObjectsUnderPoint()メソッド (DisplayObjectContainer から) を使用することです。ポイントの使用 - ドラッグ/マウス イベントのローカル座標系から。これにより、表示ツリーの「右」ブランチが表示されます。

理解するのが難しいのは、どの要素とやり取りしたいのかを正確に知ることだと思います-この場合はアイテムエディターです。容疑者リストを繰り返し処理するときは、ItemEditor ( IGridItemRenderer) が持っていることがわかっているが他のオブジェクトではないことがわかっているインターフェイスと比較する必要があります。

また、mouseX/mouseY 座標が存在する参照に応じて、ほとんどの場合、アイテム エディターが存在するのと同じ座標系に変換する必要があります。この場合、エディターは PopupManager (または SystemManager) によって処理されます。 Flex SDK チームが halo で行ったのと同じパラダイムに従って Spark を使用した場合はそうなるはずですが、私はこれを確認していません。

質問の文言からはわかりませんが、アイテム エディターを開いた後にアイテムを配置できるようにしようとしている場合、フォーカス管理のために非常に難しくなります。

于 2012-05-29T20:02:16.860 に答える