Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.06.2010, 07:30
AngelDeath вне форума Посмотреть профиль Отправить личное сообщение для AngelDeath Найти все сообщения от AngelDeath
  № 1  
Ответить с цитированием
AngelDeath

Регистрация: Jun 2010
Сообщений: 16
По умолчанию привязка объектов при перетаскивании

здравствуйте все! проблема следующая... при перетаскивании объектов по сцене, если другие объекты связаны с этими, то они не перемещаются вместе с ними. подскажите как это можно реализовать?

для лучшего восприятия предлагаю пример. есть на сцене 3 шейпа, они перетаскиваются с помощью мыши (все 3 сразу). в одном из них находится текстовое поле. как сделать, чтобы при перемещении шейпов, текстовое поле не оставалось, а двигалось вместе с шейпам?

З.Ы. вариант перенести создание текстового поля в класс где создаются шейпы не подходит. текстовое поле нужно как-то связать именно из главного класса проекта.
Вложения
Тип файла: rar dragNdrop.rar (17.6 Кб, 75 просмотров)

Старый 20.06.2010, 13:56
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 2  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
у вас группа шейпов находится в одном общем контейнере, а текстфилд отдельно, в руте..
если хотите перемещать текстовое поле вместе с шейпами, засуньте его по крайней мере в контейнер с шейпами, т.е. вместо
Код AS3:
addChild(t1);
напишите
Код AS3:
cObject.addChild(t1);
__________________
freelance | Раздор

Старый 20.06.2010, 18:14
AngelDeath вне форума Посмотреть профиль Отправить личное сообщение для AngelDeath Найти все сообщения от AngelDeath
  № 3  
Ответить с цитированием
AngelDeath

Регистрация: Jun 2010
Сообщений: 16
спасибо, с этим уже сам разобрался (как раз тем же способом =) )...

а вот подскажите как сделать, чтобы линия нарисованная между 2 шейпами, после перетаскивания обновилась (координаты её конечно высчитываются через ссылку на координаты шейпов, и шейпы двигаются отдельно друг от друга). а ещё лучше, чтобы при перетаскивании тот конец, который примыкает к перетаскиваемому шейпу, двигался вместе с ним, а другой в это время стоял на месте...

Старый 21.06.2010, 00:24
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 4  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
можно при перетаскивании подписываться на событие MOUSE_MOVE, пересчитывать нужные координаты и отрисовывать линию
но лучше MOUSE_MOVE для этого не юзать, т.к. событие происходит слишком часто, а запускать таймер с нужной частотой и на каждый тик отрисовывать... при отпускании мыши таймер останавливать. Или на ENTER_FRAME.... вобщем как удобнее и в зависимости от конкретной ситуации
__________________
freelance | Раздор

Старый 22.06.2010, 00:39
AngelDeath вне форума Посмотреть профиль Отправить личное сообщение для AngelDeath Найти все сообщения от AngelDeath
  № 5  
Ответить с цитированием
AngelDeath

Регистрация: Jun 2010
Сообщений: 16
что-то не совсем у меня выходит...

Код AS3:
.................
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); //пересоздаём линии
        }
..................
и проблема в том, что конец линии движется за объектом, но потом начинает очень быстро от него убегать... и такая ситуация и при MOUSE_MOVE, и при ENTER_FRAME (тут просто пока мышь нажата, и если хоть немного объект переместить, движется в сторону движения объекта чутьли не до бесконечности, пока не отпустишь кнопку мыши). пытался сделать и через таймер, но там как-то совсем не получилось...

подскажите что делаю не так...

Старый 22.06.2010, 22:11
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 6  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
вот пример
Вложения
Тип файла: rar drag_redraw.rar (10.2 Кб, 80 просмотров)
__________________
freelance | Раздор

Старый 24.06.2010, 19:09
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 7  
Ответить с цитированием
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Цитата:
Сообщение от derhab Посмотреть сообщение
вот пример
Код AS3:
private function stopDragHandler(e:MouseEvent):void {
	_circle.stopDrag();
	_timer.stop();
	updateConnector(null);
}
Добавленая строчка (updateConnector(null)) позволит правильно перерисовать линию в случае резкого драга зеленого кружка.

Старый 24.06.2010, 19:39
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 8  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
да, абсолютно верно, спасибо
__________________
freelance | Раздор

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:58.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.