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

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

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

Регистрация: Feb 2012
Сообщений: 212
По умолчанию Потеря точности координат при использовании localToGlobal

Здравствуйте, как можно вычислить глобальные координаты без потери точности? localToGlobal возвращает точку с округленными координатами.
Код AS3:
trace(localToGlobal(new Point(2.123456789,2.123456789)));// trace выведет (x=2.1, y=2.1)


Последний раз редактировалось PlutDem; 03.03.2012 в 15:10.
Старый 03.03.2012, 15:59
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Предполагается, что для координат экранных объектов достаточно точности 1/20.
__________________
Поймай яблоко 2!

Старый 03.03.2012, 16:12
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 3  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
У меня объекты с физикой и для ее нормального просчета такой точности недостаточно. Объект может смещаться на расстояние меньшее чем 0.05 и из за такого вот округления ведет себя некорректно. Поэтому все координаты храню в отдельных Point. Понадобилось перевести локальные координаты в глобальные, а тут вот бяка такая с округлением.

Старый 03.03.2012, 16:38
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 4  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Остается лишь написать собственный метод преобразования координат.
__________________
Поймай яблоко 2!

Старый 03.03.2012, 17:31
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 5  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Храни x и y в массиве или объекте.

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

Регистрация: Feb 2012
Сообщений: 212
Цитата:
Сообщение от MikroAcse Посмотреть сообщение
Храни x и y в массиве или объекте.
??? И как это поможет узнать глобальные координаты?

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

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

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

Регистрация: Feb 2012
Сообщений: 1,540
Ну, это надо подумать
Интересно, есть ли какая формула, чтобы узнавать глобальные переменные с высокой точностью?

Старый 03.03.2012, 17:46
FlashRus вне форума Посмотреть профиль Отправить личное сообщение для FlashRus Найти все сообщения от FlashRus
  № 9  
Ответить с цитированием
FlashRus
 
Аватар для FlashRus

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 920
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Сделайте свой глобалТуЛокал.
Вычисляйте положение родительского элемента и уже от этого пляшите.
__________________
ЛОДКИ

Старый 03.03.2012, 17:51
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 10  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
#concatenatedMatrix

Код AS3:
var sprite1:Sprite = new Sprite();
sprite1.x = 10;
sprite1.y = 10;
var sprite2:Sprite = new Sprite();
sprite2.x = 100;
sprite2.y = 90;
var sprite3:Sprite = new Sprite();
sprite3.x = 10;
sprite3.y = 30;
addChild(sprite1);
sprite1.addChild(sprite2);
sprite2.addChild(sprite3);
trace (sprite3.transform.concatenatedMatrix.transformPoint(new Point(2.123456789,2.123456789)));//(x=122.123456789, y=132.123456789)
trace(sprite3.localToGlobal(new Point(2.123456789,2.123456789)));//(x=122.1, y=132.1)
ещё можно так, если нужно преобразовать координаторы не в координаты stage, а в координаты одного из родительского объекта
Но он медленнее чем тот который выше
Код AS3:
trace (localToParent(new Point(), sprite3, stage, new Matrix()));
trace (localToParent(new Point(), sprite3, sprite1, new Matrix()));
 
function localToParent(point:Point, object1:DisplayObject, object2:DisplayObject, matrix:Matrix):Point
{
	matrix.concat(object1.transform.matrix);
 
	if(object1.parent != null && object1.parent != object2)
	{
		return localToParent(point, object1.parent, object2, matrix);
	}
 
	return matrix.transformPoint(point);
}


Последний раз редактировалось Nooob; 03.03.2012 в 18:24.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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