![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 36
|
Есть объект First:UIComponent, он находится в Panel1 - его ребенок.
Есть Panel2 - сюда необходимо перетащить объект UIComponent. Создание объекта происходит с помощью AS. Когда я перетаскиваю (1. startDrag(). 2.stopDrag()) , то фактически мой объект остается в том же Panel1, где он дочерний элемент, а визуально его можно до операции stopDrag() перенести в любую область экрана, только после stopDrag() он свои новые координаты отсчитывает в своем родительском элементе Panel1. Хочу, чтобы при перетаскивании на Panel2, он добавлялся в Panel2 на указанное место. Т.е. могу ли я определить в момент stopDrag над каким каким контейнером находится мой объект? Или можно сделать как-то иначе? Последний раз редактировалось etc; 22.03.2007 в 17:10. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Копай в сторону DragEvent.currentTarget
http://livedocs.macromedia.com/flex/...op_081_13.html |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 36
|
Спасибо большое!!!!
|
|
|||||
|
Регистрация: Mar 2007
Сообщений: 36
|
После DragManager.doDrag(dragInitiator, ds, event, dragInitiator); , объект, который перетаскивается (UIComponent) из Panel1 в Panel2 перестает быть дочерним в Panel1, но при попытке добавить его в Panel2 ( Panel2.addChild(First) ) выдает ошибку:
RangeError: Error #2006: The supplied index is out of bounds. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Давай ты соберешь нерабочий пример, а то мне собирать очередной проект не очень хочется
![]() |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 36
|
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();">
<mx:Script><![CDATA[
import flash.geom.*;
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.errors.*;
import mx.managers.*;
import mx.core.DragSource;
import mx.events.*;
import mx.controls.Image;
import mx.graphics.*;
import mx.core.*;
//part for graphics =)))
import mx.containers.Panel;
var uic:UIComponent = new UIComponent();
public function init() {
img_panel.addEventListener(DragEvent.DRAG_ENTER, makeDragEnter);
img_panel.addEventListener(DragEvent.DRAG_DROP, makeDragDrop);
var myCont:Sprite = new Sprite();
var Rect:Shape = new Shape();
Rect.graphics.lineStyle(1, 0x000000);
Rect.graphics.beginFill(0x00FF00, 1);
Rect.graphics.drawRect(0, 0, 120, 120);
myCont.addChild(Rect);
tools_panel.addChild(uic);
uic.addChild(myCont);
uic.addEventListener(MouseEvent.MOUSE_MOVE, dragMeObj);
}
public function dragMeObj(event:MouseEvent):void {
var dragInitiator:UIComponent =UIComponent(event.currentTarget);
var ds:DragSource = new DragSource();
DragManager.doDrag(dragInitiator, ds, event, dragInitiator);
//dragInitiator.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
//dragInitiator.startDrag();
}
public function makeDragDrop(event:DragEvent):void {
img_panel.addChild(uic);
}
public function makeDragEnter(event:DragEvent):void {
var dropTarget:UIComponent = UIComponent(event.target);
DragManager.acceptDragDrop(dropTarget);
}
]]></mx:Script>
<mx:Panel x="0" y="10" width="423" height="467" layout="absolute" id="img_panel">
</mx:Panel>
<mx:Panel x="431" y="10" width="228" height="467" layout="absolute" id="tools_panel">
</mx:Panel>
</mx:Application>
DragManager.doDrag(dragInitiator, ds, event, dragInitiator); в качестве объекта замещения передаю dragInitiator. Если не передаю: DragManager.doDrag(dragInitiator, ds, event); , то всё хорошо Последний раз редактировалось etc; 24.03.2007 в 15:37. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
easyLife, а простыню кода твоего оформлять кто будет?
Приведи код в порядок. Я покулыпаюсь и напишу. |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 36
|
Быть может я неправильно поняла что значит оформлять, но одной мне это точно не победить. Хочу, чтобы во время перетаскивания объект перетаскивания был под курсором мыши и хочется, чтобы ошибки не было. Читаю доку, найти не могу в чем причина
![]() |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 44
|
Посмотри. Это случайно не то, что тебе надо??
http://www.rictus.com/flex/LiveRefle...iew/index.html |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Какой-то жесткий хак:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();">
<mx:Script><![CDATA[
import flash.geom.*;
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.errors.*;
import mx.managers.*;
import mx.core.DragSource;
import mx.events.*;
import mx.controls.Image;
import mx.graphics.*;
import mx.core.*;
//part for graphics =)))
import mx.containers.Panel;
private var uic:UIComponent = new UIComponent();
public function init():void {
img_panel.addEventListener(DragEvent.DRAG_ENTER, makeDragEnter);
var myCont:Sprite = new Sprite();
var Rect:Shape = new Shape();
Rect.graphics.lineStyle(1, 0x000000);
Rect.graphics.beginFill(0x00FF00, 1);
Rect.graphics.drawRect(0, 0, 120, 120);
myCont.addChild(Rect);
tools_panel.addChild(uic);
uic.addChild(myCont);
uic.addEventListener(MouseEvent.MOUSE_MOVE, dragMeObj);
}
public function dragMeObj(event:MouseEvent):void {
var dragInitiator:UIComponent = UIComponent(event.currentTarget);
var ds:DragSource = new DragSource();
DragManager.doDrag(dragInitiator, ds, event, dragInitiator);
dragInitiator.addEventListener(DragEvent.DRAG_COMPLETE,makeDragDrop);
//dragInitiator.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
//dragInitiator.startDrag();
}
public function makeDragDrop(event:DragEvent):void {
//
uic.addEventListener(Event.REMOVED,removedHandler);
}
private function removedHandler(event:Event):void {
//img_panel.addChild(uic);
callLater(completeHandler);
}
private function completeHandler():void {
img_panel.addChild(uic);
}
public function makeDragEnter(event:DragEvent):void {
var dropTarget:UIComponent = UIComponent(event.target);
DragManager.acceptDragDrop(dropTarget);
}
]]></mx:Script>
<mx:Panel x="0" y="10" width="423" height="467" layout="absolute" id="img_panel">
</mx:Panel>
<mx:Panel x="431" y="10" width="228" height="467" layout="absolute" id="tools_panel">
</mx:Panel>
</mx:Application>
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|