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

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

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

Регистрация: Mar 2009
Сообщений: 357
По умолчанию как узнать: увеличивается ли расстояние между объектами или наоборот?

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

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Сравнивать их расстояние каждый кадр. Если следующее больше предыдущего, значит увеличивается.
Расстояние находится по формуле Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
__________________
#flasher@irc.trg.ru:6667


Последний раз редактировалось Obi; 21.08.2009 в 22:12.
Старый 21.08.2009, 22:41
Герыч вне форума Посмотреть профиль Отправить личное сообщение для Герыч Найти все сообщения от Герыч
  № 3  
Ответить с цитированием
Герыч
 
Аватар для Герыч

блогер
Регистрация: Apr 2009
Адрес: НиНо
Сообщений: 185
Записей в блоге: 12
наверно более быстрый вариант - спроецировать смещение на вектор между ними и поглядеть на знак, тем более если p поделить на Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)), то получим скорость сближения:
Код AS3:
p=((x1-xold1)-(x2-xold2))*(x1-x2)+((y1-yold1)-(y2-yold2))*(y1-y2);
if(p<0)
  trace("сближаются");
else
  trace("расходятся");
Надо сравнить с предложенным выше на скорость и выбрать лучший.
P.S. может в знаке ошибся

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

Регистрация: Mar 2009
Сообщений: 357
спасибо. а как узнать, в какую сторону (вверх или вниз) движется объект? видимо, нужно сравнивать положение объекта с предыдущим его состоянием. только вот как?

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

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
Код AS3:
Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))
а зачем использовать вычисление корня. можно вполне обойтись (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)
я думаю, если увеличивается расстояние, то будет увеличиваться и квадрат расстояния. (хотя если нужно знать расстояние точно, то нужно и корень извлеч)

Добавлено через 3 минуты
Цитата:
а как узнать, в какую сторону (вверх или вниз) движется объект?
если ((xOld - xNew) > 0), то влево, ((xOld - xNew) < 0) - вправо
соответственно: ((yOld - yNew) > 0) - вверх, ((yOld - yNew) < 0) - вниз
__________________
я могу стать всем, если только захочу

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

Регистрация: Jan 2009
Сообщений: 1,651
2loover: что значит как? Чудес в этой вселенной не бывает. Если вам нужно сравнить положение объекта с его предыдущим состоянием, то это значит, что это предыдущее состояние надо запомнить.

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

Регистрация: Mar 2009
Сообщений: 357
в том то и дело: я не знаю когда сохранять одно значение, а когда его сравнивать с текущим.

мне нужно что-то типа скроллера. т.е. чтобы один объект сдвигался относительно другого при перемещении последнего. например, если ползунок сдвинулся на 1 - контент на 2.3. можно запоминать значение в момент MOUSE_MOVE и, если текущее положение объекта не равно этому значению, обновить значение. но это нормально работает, если мышь двигается не очень быстро. в противном случае MOUSE_MOVE отслеживает сдвиг не на один пиксель, а как получится.

Старый 22.08.2009, 06:10
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 8  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Ну, перерисовывайте по ENTER_FRAME, правда не понятно зачем вообще это нужно Сдвиг в один пиксель отследить нереально, да и не нужно. По-моему, вам нужно просто пропорцию составить, если я правильно понял. Посчитать какой процент пути прошел ползунок и на такой же процент сдвинуть контент.
__________________
Дело не в тебе

Старый 22.08.2009, 11:40
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 9  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Цитата:
Сообщение от loover Посмотреть сообщение
в том то и дело: я не знаю когда сохранять одно значение, а когда его сравнивать с текущим.
Сохранять надо сразу перед изменением. Какие ещё могут быть варианты?

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

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

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


 


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


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