希望有人柔性經驗將能夠給出的建議是:拖放自定義標題邊框盒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