所以我在 flex 4 中有这个 titledborderbox 和自定义皮肤,我正在开发拖放应用程序,我遇到了一些问题。
当我在该组件上启动拖放操作时,我可以拖动它的子组件,但不能拖动 titledborderbox 本身,例如:我可以抓住这个框内的标签或按钮,我可以开始拖动它,但这不是所需的功能。我应该能够单击 titledborderbox 上的任意位置并将整个组件及其子组件拖动到新位置。我试过 mouseChildren = false 但这会禁用孩子身上的事件,这是不好的,因为一些孩子是我无论如何都必须能够与之交互的按钮。有没有解决这个问题的方法,如何解决?
我的 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 );
}