希望有人柔性经验将能够给出的建议是:拖放自定义标题边框盒Flex 4点中的问题
所以我有一个定制标题边框容器小的Flex 4应用程序,我想能够将它们拖放到容器之间,但是... d &处理flex组件时,d很简单,但此自定义标题容器由几个部分组成,例如:label,border container ...我尝试拖放标题容器,然后我不能抓住整个标题容器,但只是其中一个部分(标签或边框),当我放弃然后flex引发错误,该元素不在同一组。
我知道这可能不是对问题最简单的解释,但也许有人已经遇到过这个问题,或者有了一些这方面的经验,任何帮助表示赞赏。
嗨,我已经编辑我的问题,以提供更好的理解这个问题,所以我有自定义标题容器的像这样的布局:
----Group A --------------------------------
| |
| --- Sub Group A -------------------- |
| | | |
| | --- Item A1 -- --Item A2--- | |
| | | | | | | |
| | | | | | | |
| | |------------- ------------ | |
| | | |
| |----------------------------------- |
| |
|-------------------------------------------
----Group B --------------------------------
| |
| --- Sub Group B -------------------- |
| | | |
| | --- Item B1 -- --Item B2--- | |
| | | | | | | |
| | | | | | | |
| | |------------- ------------ | |
| | | |
| |----------------------------------- |
| |
|-------------------------------------------
II希望能够交换集团A组和B组(也就是A组和B组子女)(子组A & B)必须可以互换,最后子组A & B的子女也必须可交换。现在我已经设法让子组的子组交换能力,并且子组也可以彼此交换,但是... 有时,当我将子组A与子组B交换时,子组G在子组内部B.这是一个工作的进展情况和我张贴与我建立了可运行的代码,但不包括TitledContainer,如果你需要这个组件让我知道:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:titledContainer="titledContainer.*"
>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.core.DragSource;
import mx.core.IUIComponent;
import mx.core.IVisualElement;
import mx.events.DragEvent;
import mx.managers.DragManager;
import spark.components.SkinnableContainer;
//-------------------------------------------------------------------
// ITEM BOXES DRAG FUNCTIONS
//--------------------------------------------------------------------
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);
}
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:SkinnableContainer = (dragItem.owner as
SkinnableContainer);
dragItemOwner.removeElement(dragItem as IVisualElement);
var targetOwner:SkinnableContainer = (evt.target as
SkinnableContainer);
targetOwner.addElement(dragItem as IVisualElement);
}
//-------------------------------------------------------------------
// SUB GROUPS CONTAINERS DRAG FUNCTIONS
//--------------------------------------------------------------------
private function handleStartDragSub(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);
}
protected function handleDragEnterSub(evt:DragEvent):void
{
if(evt.dragSource.hasFormat("item"))
DragManager.acceptDragDrop(evt.target as IUIComponent);
}
protected function handleDragDropSub(evt:DragEvent):void
{
var dragItem:Object = evt.dragSource.dataForFormat("item");
var dragItemOwner:SkinnableContainer = (dragItem.owner as
SkinnableContainer);
dragItemOwner.removeElement(dragItem as IVisualElement);
var targetOwner:SkinnableContainer = (evt.target as
SkinnableContainer);
targetOwner.addElement(dragItem as IVisualElement);
}
]]>
</fx:Script>
<!-- MAIN CONTAINER ~~~~~~~~~~~~~~~~~~~~~~-->
<s:SkinnableContainer x="50" y="50" width="100%" height="100%" >
<s:layout>
<s:VerticalLayout />
</s:layout>
<!-- FIRST ROW ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<s:SkinnableContainer width="100%" >
<s:layout>
<s:HorizontalLayout />
</s:layout>
<!-- First Group -->
<titledContainer:TitledContainer label="Group A" width="50%" dragEnter="handleDragEnterSub(event)" dragDrop="handleDragDropSub(event)">
<titledContainer:layout>
<s:VerticalLayout paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" gap="10"/>
</titledContainer:layout>
<s:Group width="100%" mouseDown="handleStartDragSub(event);" >
<s:layout>
<s:HorizontalLayout />
</s:layout>
<titledContainer:TitledContainer label="Sub Group A" width="500" dragEnter="handleDragEnter(event)" dragDrop="handleDragDrop(event)">
<titledContainer:layout>
<s:HorizontalLayout paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" gap="10"/>
</titledContainer:layout>
<s:Group mouseDown="handleStartDrag(event);">
<titledContainer:TitledContainer label="Item A 1" >
<titledContainer:layout>
<s:VerticalLayout paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" gap="10"/>
</titledContainer:layout>
</titledContainer:TitledContainer>
</s:Group> <!-- Item 1 end-->
<s:Group mouseDown="handleStartDrag(event);">
<titledContainer:TitledContainer label="Item A 2" >
<titledContainer:layout>
<s:VerticalLayout paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" gap="10"/>
</titledContainer:layout>
</titledContainer:TitledContainer>
</s:Group> <!-- Item 2 end-->
</titledContainer:TitledContainer><!-- Front cover 2 end-->
</s:Group>
<s:Group width="100%" mouseDown="handleStartDragSub(event);" >
<s:layout>
<s:HorizontalLayout />
</s:layout>
<titledContainer:TitledContainer label="Sub Group B" width="500" dragEnter="handleDragEnter(event)" dragDrop="handleDragDrop(event)">
<titledContainer:layout>
<s:HorizontalLayout paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" gap="10"/>
</titledContainer:layout>
<s:Group mouseDown="handleStartDrag(event);">
<titledContainer:TitledContainer label="Item B3" >
<titledContainer:layout>
<s:VerticalLayout paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" gap="10"/>
</titledContainer:layout>
</titledContainer:TitledContainer>
</s:Group> <!-- Item 3 end-->
<s:Group mouseDown="handleStartDrag(event);">
<titledContainer:TitledContainer label="Item B4" >
<titledContainer:layout>
<s:VerticalLayout paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" gap="10"/>
</titledContainer:layout>
</titledContainer:TitledContainer>
</s:Group> <!-- Item 4 end-->
</titledContainer:TitledContainer><!-- Front cover 3 end-->
</s:Group>
</titledContainer:TitledContainer><!-- Front cover 1 end-->
</s:SkinnableContainer> <!-- first row end-->
</s:SkinnableContainer>
</s:Application>
请注意,我是一个Flex和AS3初学者所以请对我温柔,
的问题是:
能够交换组,子组和项目相互(保持层次结构),并禁止错位置,即:分A组,小组B组等内部
当单击自定义标题容器用户应该能够拖动整个组件,而不是标题,或边框容器或其他标题容器内部的内容。
请温柔的初学者,我不要求你写的代码为我,而是指导如何做正确,但代码样本的欢迎,谢谢大家。
您希望能够在容器之间拖放** WHAT **? Flex会抛出什么错误?你能分享一些代码吗?也许是一个可运行的样本。 – JeffryHouser 2013-04-26 15:27:54
嗨,我已经更新了这个问题,所以现在它更容易理解,请你看看,并可能帮助我一下,谢谢。 – Kugarek 2013-04-29 11:39:55