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

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

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

Регистрация: May 2006
Сообщений: 57
Question Перевод из локальных в глобальные

Здравствуйте! У меня пролема: у меня есть мувик A, внутри которого есть мувик B. Как мне получить координаты мувика B в Stage (в глобальных координатах)? Причем с учетом того что тот мувик A, может быть повернут на любой угол.

Старый 04.06.2006, 18:12
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
http://novemberain.com/livedocs/Help.../00001521.html
Смени кодировку страницы на utf-8
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 04.06.2006 в 18:14.
Старый 04.06.2006, 19:23
World Architect вне форума Посмотреть профиль Отправить личное сообщение для World Architect Найти все сообщения от World Architect
  № 3  
Ответить с цитированием
World Architect

Регистрация: May 2006
Сообщений: 57
О, пасиб А я сначала подумал что он просто прибавляет к координатам передаваемой точки свои и сумму возвращает.

Старый 04.06.2006, 19:28
World Architect вне форума Посмотреть профиль Отправить личное сообщение для World Architect Найти все сообщения от World Architect
  № 4  
Ответить с цитированием
World Architect

Регистрация: May 2006
Сообщений: 57
Все, понял смысл параметров метода Торможу... )

Старый 05.06.2006, 13:19
World Architect вне форума Посмотреть профиль Отправить личное сообщение для World Architect Найти все сообщения от World Architect
  № 5  
Ответить с цитированием
World Architect

Регистрация: May 2006
Сообщений: 57
Question Продолжаем :)

Тааак... Долблюсь дальше... Теперь проблема возникла другая:
(_x, _y) указывает на ноль в системе координат мувика (доп., прямоугольник. Центр координат в любом месте прямоугольника)
Мне надо
1) найти середину правой границы и прочертить линию из этой точки в точку, удаленную на половину ширины прямоугольника в право. Таким образом как ни верти мувик, линия всегда будет перпендикулярна стороне пр-ка и равна половине его ширины (нормальной ширины, а не той что getBounds(_root) выдает)

Проблему решил очень криво:
Туда, откуда должна исходить линия, поставил невидимый кружочек с именем axe. B далее делаю localToGlobal от этого кружка, тем самым получая координаты этой точки. Но вот допустим localToGlobal не от самого кружка. а от точки чуть правее уже не дает нормального результата. Нормально получается если _rotation прямоугльника на нуле. Если же на 180, то полученная прямая не поворачивается, а смотрит в том же направлении, несмотря на то что axe находится внутри прямоугольника (внутри мувика), а прямоугольник повернут.

Код ниже.

src, dst - два мувика, в которых на правой стороне расположены мувики axe (жирная точка). Функция compare рисует линию таким образом: сначала перпендикулярно одному пр-ку, потом до второго (не доходя) и потом перпендикулярно второму.

Код:
	function compare(src, dst) {
		// Вспомогательные переменные
		var srcb = src.getBounds(src);
		var dstb = dst.getBounds(dst);
		
		var srcp  : Object = {x : 0, y : 0};
		var dstp  : Object = {x : 0, y : 0};
		var srcp1 : Object = {x : src._width / 2, y : 0}; 
		var dstp1 : Object = {x : dst._width / 2, y : 0}; 
		
		src.axe.localToGlobal(srcp); 
		dst.axe.localToGlobal(dstp);
		src.axe.localToGlobal(srcp1); 
		dst.axe.localToGlobal(dstp1);

		lineclip.moveTo(srcp.x,  srcp.y);
		lineclip.lineTo(srcp1.x, srcp1.y);
		lineclip.lineTo(dstp1.x, dstp1.y);
		lineclip.lineTo(dstp.x,  dstp.y);
	}
Что не так?
Я бы поставил второй кружочек, но при этом изменится ширина мувика, а это оч не желательно

Старый 05.06.2006, 13:33
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Устал читать И не понятно.
Может лучше исходник?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.06.2006, 13:41
World Architect вне форума Посмотреть профиль Отправить личное сообщение для World Architect Найти все сообщения от World Architect
  № 7  
Ответить с цитированием
World Architect

Регистрация: May 2006
Сообщений: 57
Код:
-----------------
|               |
|               |======
|               |
-----------------
Вот равенствами показано то что надо нарисовать с пом линий. Длина "отростка" равна половине ширины пр-ка. Причем рисовать надо через localToGlobal и globalToLocal, т.к. пр-к м.б. повернут. Прямоугольник - мувик. Линия - отдельно через AS.
А исходник полный к сож не имею права выкладывать...

Старый 05.06.2006, 13:54
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Что то типа этого?
Код:
this.createEmptyMovieClip ("mc", 0);
this.mc.lineStyle (0, 0);
this.mc.moveTo (-100, -100);
this.mc.lineTo (100, -100);
this.mc.lineStyle (0, 0xFF0000);
this.mc.lineTo (100, 100);
this.mc.lineStyle (0, 0);
this.mc.lineTo (-100, 100);
this.mc.lineTo (-100, -100);
this.mc._x = this.mc._y = 200;
this.mc._rotation = 30;
////
function drawLine () {
	var pointA = {};
	pointA.x = 100;
	pointA.y = 0;
	var pointB = {};
	pointB.x = 100 + this.mc._width / 2;
	pointB.y = 0;
	this.mc.localToGlobal (pointA);
	this.mc.localToGlobal (pointB);
	this.lineStyle (0, 0x0000FF);
	this.moveTo (pointA.x, pointA.y);
	this.lineTo (pointB.x, pointB.y);
}
drawLine ();
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.06.2006, 14:20
World Architect вне форума Посмотреть профиль Отправить личное сообщение для World Architect Найти все сообщения от World Architect
  № 9  
Ответить с цитированием
World Architect

Регистрация: May 2006
Сообщений: 57
Да, правльно, только 0 у mc заранее не известно где находится. Т.е. не обязательно в центре.

Старый 05.06.2006, 14:23
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Ну сам то ты с этим разберешься?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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