0

したがって、カスタムスキンを使用してflex 4にこのtitledborderboxを持っています。ドラッグアンドドロップアプリケーションに取り組んでおり、いくつかの問題に遭遇しました。

  1. そのコンポーネントでドラッグ アンド ドロップを開始すると、その子はドラッグできますが、titledborderbox 自体はドラッグできません。機能。titledborderbox の任意の場所をクリックして、コンポーネント全体とその子を新しい位置にドラッグできるはずです。私は mouseChildren = false を試しましたが、それは子のイベントを無効にします。この問題の回避策はありますか?どうすれば解決できますか?

  2. 私の titledborderbox コンテナは HGroup にあります。titledborderbox を特定の位置にドロップできるようにしたいと考えています。たとえば、4 つの titledborderbox コンテナがあり、最後のコンテナをドラッグし始めた場合、その位置に配置できるようにしたい1 は HGroup コンテナにありますが、ドラッグ マネージャはドロップされたアイテムを常にグループ内の最後のアイテムとして配置します。解決策はありますか?

このレイアウトを使用する必要があり、他のレイアウトに変更することはできません。達成しようとしていることの適切な例が見つかりません。それは可能ですか? どんな助けでも感謝します、ありがとう。ドラッグするための私のコードは次のとおりです。

private function handleStartDrag( evt:MouseEvent ):void
            {

                // grab the item renderer and relevant data
                var dragItem:IUIComponent = evt.target as IUIComponent;
                var dragSource:DragSource = new DragSource();                               

                dragSource.addData( dragItem, "item" );
                DragManager.doDrag( dragItem, dragSource, evt );
                this.buttonMode = true;

            }

            protected function handleDragEnter( evt:DragEvent ):void
            {
                if( evt.dragSource.hasFormat( "item" ) )
                    DragManager.acceptDragDrop( evt.target as IUIComponent );

            }

            protected function handleDragDrop( evt:DragEvent ):void
            {
                var dragItem:Object = evt.dragSource.dataForFormat( "item" );
                var dragItemOwner:Group = ( dragItem.owner as   Group );
                dragItemOwner.removeElement( dragItem as IVisualElement );
                var targetOwner:Group = ( evt.target as Group );
                targetOwner.addElement( dragItem as IVisualElement );
            }
4

1 に答える 1

0

変更してみる

DragManager.acceptDragDrop( evt.target as IUIComponent );

DragManager.acceptDragDrop( evt.currentTarget as IUIComponent );

event.target は、イベントを「引き起こした」オブジェクトへの参照です (おそらく、ボックス内の画像またはテキストフィールド)。event.currentTarget は、イベント リスナー (ボックス) をバインドするオブジェクトへの参照です。

別のオプションとして、ボックスの mouseChildren-property を false に設定して、MouseEvents を発生させないようにすることもできます。ただし、これは、それらの子が MouseEvent を決して発生させない場合にのみ役立ちます。

于 2013-05-04T15:00:05.387 に答える