![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 16
|
здравствуйте все! проблема следующая... при перетаскивании объектов по сцене, если другие объекты связаны с этими, то они не перемещаются вместе с ними. подскажите как это можно реализовать?
для лучшего восприятия предлагаю пример. есть на сцене 3 шейпа, они перетаскиваются с помощью мыши (все 3 сразу). в одном из них находится текстовое поле. как сделать, чтобы при перемещении шейпов, текстовое поле не оставалось, а двигалось вместе с шейпам? З.Ы. вариант перенести создание текстового поля в класс где создаются шейпы не подходит. текстовое поле нужно как-то связать именно из главного класса проекта. |
|
|||||
|
у вас группа шейпов находится в одном общем контейнере, а текстфилд отдельно, в руте..
если хотите перемещать текстовое поле вместе с шейпами, засуньте его по крайней мере в контейнер с шейпами, т.е. вместо напишите |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 16
|
спасибо, с этим уже сам разобрался (как раз тем же способом =) )...
а вот подскажите как сделать, чтобы линия нарисованная между 2 шейпами, после перетаскивания обновилась (координаты её конечно высчитываются через ссылку на координаты шейпов, и шейпы двигаются отдельно друг от друга). а ещё лучше, чтобы при перетаскивании тот конец, который примыкает к перетаскиваемому шейпу, двигался вместе с ним, а другой в это время стоял на месте... |
|
|||||
|
можно при перетаскивании подписываться на событие MOUSE_MOVE, пересчитывать нужные координаты и отрисовывать линию
но лучше MOUSE_MOVE для этого не юзать, т.к. событие происходит слишком часто, а запускать таймер с нужной частотой и на каждый тик отрисовывать... при отпускании мыши таймер останавливать. Или на ENTER_FRAME.... вобщем как удобнее и в зависимости от конкретной ситуации |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 16
|
что-то не совсем у меня выходит...
................. public function startDragging(event:MouseEvent):void { event.target.startDrag(); event.target.addEventListener(MouseEvent.MOUSE_MOVE,coordinate); } public function stopDragging(event:MouseEvent):void { event.target.stopDrag(); event.target.removeEventListener(MouseEvent.MOUSE_MOVE,coordinate); } private function coordinate(event:MouseEvent):void { //trace("move"); var newCoord:Point = event.target.globalToLocal(this.localToGlobal(new Point()));//вычисляем новые координаты объекта var newPoint:Point = new Point(getFormCoord(event.target.entityName).x-newCoord.x,getFormCoord(event.target.entityName).y-newCoord.y);//пересчитываем старые deleteChild(); //удаляем линии setFormCoord(event.target.entityName,newPoint);//сохраняем новые координаты createLineConnect(dataBase); //пересоздаём линии } .................. подскажите что делаю не так... |
|
|||||
|
Добавленая строчка (updateConnector(null)) позволит правильно перерисовать линию в случае резкого драга зеленого кружка.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:58. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|