Цитата:
Сообщение от alatar
Второй параметр в методе startDrag().
|
Ага. Спасибо! вроде бы разобрался)
Правда объекты справа и снизу за пределы уезжают при перемещении.
test_Drag_and_Drop.mxml:

Код:
<?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="800" minHeight="600" creationComplete="init()">
<s:layout><s:VerticalLayout gap="5" paddingBottom="100" paddingLeft="100" paddingRight="100" paddingTop="100"/></s:layout>
<fx:Declarations>
<s:ArrayCollection id="objectList_1">
<fx:Object objName="Объект 1"/>
<fx:Object objName="Объект 2"/>
<fx:Object objName="Объект 3"/>
<fx:Object objName="Объект 4"/>
<fx:Object objName="Объект 5"/>
</s:ArrayCollection>
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.core.IUIComponent;
import mx.core.IVisualElement;
import mx.events.DragEvent;
import mx.events.FlexEvent;
import mx.managers.DragManager;
protected function init():void
{
container.addEventListener(DragEvent.DRAG_COMPLETE, drag_drop_Handler);
container.addEventListener(DragEvent.DRAG_DROP, drag_drop_Handler);
container.addEventListener(DragEvent.DRAG_ENTER, drag_drop_Handler);
container.addEventListener(DragEvent.DRAG_EXIT, drag_drop_Handler);
container.addEventListener(DragEvent.DRAG_OVER, drag_drop_Handler);
container.addEventListener(DragEvent.DRAG_START, drag_drop_Handler);
}
private function drag_drop_Handler(event:DragEvent):void
{
var object:Object = event.currentTarget;
switch(event.type)
{
case DragEvent.DRAG_DROP:
var new_Object:testObject = new testObject;
new_Object.x = container.mouseX;
new_Object.y = container.mouseY;
new_Object.mouseChildren = false;
new_Object.buttonMode = true;
new_Object.addEventListener(MouseEvent.MOUSE_DOWN, drag_drop);
new_Object.addEventListener(MouseEvent.MOUSE_UP, drag_drop);
new_Object.addEventListener(MouseEvent.MOUSE_MOVE, drag_drop);
container.addElement(new_Object);
break;
case DragEvent.DRAG_ENTER:
DragManager.acceptDragDrop(object as IUIComponent);
break;
}
}
private function drag_drop(event:MouseEvent):void
{
var object:Object = event.currentTarget;
switch(event.type)
{
case MouseEvent.MOUSE_DOWN:
container.setElementIndex(event.target as IVisualElement, container.numElements - 1);
object.startDrag(false, new Rectangle(0, 0, container.width, container.height));
object.scaleX = 1.05;
object.scaleY = 1.05;
break;
case MouseEvent.MOUSE_UP:
object.stopDrag();
object.scaleX = 1.0;
object.scaleY = 1.0;
break;
}
}
]]>
</fx:Script>
<s:HGroup width="100%" height="100%">
<s:List width="150" height="100%" dataProvider="{objectList_1}" labelField="objName" dragEnabled="true" allowMultipleSelection="true"/>
<s:BorderContainer id="container" width="100%" height="100%"/>
</s:HGroup>
</s:Application>
testObject.mxml:

Код:
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="50" height="50">
<s:BorderContainer borderWeight="1">
<s:Rect left="0" right="0" top="0" bottom="0">
<s:fill><s:SolidColor color="0xF3F3F3"/></s:fill>
<s:stroke><s:SolidColorStroke weight="1"/></s:stroke>
</s:Rect>
</s:BorderContainer>
</s:Group>
Цитата:
Сообщение от alatar
P.S. А зачем вы в BorderContainer еще и Group вставили?
|
из примера забыл убрать )