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

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

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

Регистрация: Jan 2011
Сообщений: 247
Attention универсальная функция для квадратов

Добрый день,
собственно сразу по делу

дано:
глобальная точка:
p.x = 100;

два квадрата:
rect1.x = 0;
rect1.width = 200;
rect2.x = 200;
rect2.width = 200;

надо получить две точки с такими значениями
a1.x = 100;
b1.x = -100;

надо найти универсальнульную формулу для обеих точек относительно двух квадратов

Код AS3:
//примеры:
//#1 относительно первого квадрата
 
a1.x == p.x - rect1.x // мы получили точку a1 как надо (получили : 100)
//проверяем теперь по этой функции b1 
b1.x != p.x - rect1.x // мы не получили точку b1 как надо было, (надо былобы получить : -100)
 
//#2 относительно второго квадрата
a1.x != p.x - rect2.x // мы  не получили точку a1 как надо (надо былобы получить : 100)
//проверяем теперь по этой функции b1 
b1.x == p.x - rect2.x // мы получили точку b1 как надо, (получили : -100)
вот еще код из-за которого построенна данная задача , мб чем-то поможет:
Код AS3:
var body:Body = e.data as Body; // w,h - 150
for(var i:int = 0; i < workRect.length; i++)
{
	var rect:Cell = workRect[i];
	if(checkBody(rect, body))// тут просто проверка попадает ли мой бодик в квадрат
	{
		body.localX = body.x - rect.x;
		body.localY = body.y - rect.y;
		rect.enterBody(body);// тут он либо добавляет этот бодик если его нет в этом квадрате
		// либо апдейтит локальные координаты
	}
}


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

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Каша какая-то. 146% ты неверно понял условие задачи. Почему я так уверен? Ну, может потому что не может быть двух значений выражения
Код AS3:
p.x - rect1.x
а ты почему-то ожидаешь, что оно по мановению волшебной палочки сначала даст одно число, потом другое =)

Тебе наверное нужно получить координату точки 100 относительно каждого квадрата. И тогда твоя формула прекрасно работает:
Код AS3:
a1.x == p.x - rect1.x; // прекрасно! координата точки p относительно первого квадрата
b1.x == p.x - rect2.x; // и вот опять! координата точки p относительно второго квадрата
P.S.
Не говоря уже о том, что тут вообще решительно пофиг на "квадраты", достаточно лишь координаты центра.
__________________
Поймай яблоко 2!

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

Регистрация: Jan 2011
Сообщений: 247
Цитата:
Сообщение от Zebestov Посмотреть сообщение
146% ты неверно понял условие задачи.
добавил еще пример кода в тему, чтоб не было такой уверенности )


Последний раз редактировалось GrafMine; 06.09.2015 в 22:00.
Старый 06.09.2015, 22:58
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 4  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
Попробуйте иначе сформировать вопрос и полно объяснить что имеете и что хотите, а то похоже, что вы сделали какой-то костыль для решения вашей задачи, но и костыль не работает

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

Регистрация: Jan 2011
Сообщений: 247
вышло все банально просто :
Код AS3:
if(body.parent == rect)
{
	body.localX = body.x - rect.x;
	body.localY = body.y - rect.y;
}
else
{
	body.localX = rect.x - body.x;
	body.localY = rect.y - body.y;
}

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

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

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


 


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


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