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

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

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

Регистрация: Sep 2008
Сообщений: 102
По умолчанию Найти ближайший объект

Всем привет. Не кидайте в меня помидорами, но я практически никогда в своем коде не использовал массивы, как-то обходился без них. А теперь возникла задача - написать код, который через список массивов ищет ближайший объект. В принципе я знаю через что это реализовывать, то есть надо найти ближайшое расстояние до объекта, аля dist = (en._x-_x)*(en._x-_x)+(en._y-_y)*(en._y-_y); а потом через метод for перебрать массивы - for (var z = 0; z<список массивов.length; z++). Вроде всё понятно. Но я что-то не могу рассчитать через это всё, не понимаю как проанализировать, например, что 1 объект дальше или ближе 2,3... Собственно вопрос: Как это реализовать, чтобы объект искал ближайшего.

Если у кого есть примеры, то был бы очень признателен =)

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

Регистрация: Jun 2010
Сообщений: 97
Эмммм..)) Может так?
Код AS1/AS2:
min_dist=999999;targ=-1;
for (z = 0; z<массив.length; z++) {
 dist=get_dist(); //функция, которая возвращает тебе расстояние до цели z
 if (dist<min_dist) { min_dist=dist;targ=z;}
}
/*
если targ=-1, то массив пуст,
иначе, id ближайшей цели = targ
*/


Последний раз редактировалось udaaff; 25.06.2010 в 23:11.
Старый 26.06.2010, 20:41
sersir вне форума Посмотреть профиль Отправить личное сообщение для sersir Найти все сообщения от sersir
  № 3  
Ответить с цитированием
sersir
 
Аватар для sersir

Регистрация: Sep 2008
Сообщений: 102
Спасибо за пример Jitakuzu. А функция, которая возвращает расстояние до цели z, как должна работать ? То есть она обнуляет значения, чтобы можно было найти новое расстояние до ближайшей цели ?

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

Регистрация: Jun 2010
Сообщений: 97
Например, если у тебя есть главный объект main_obj (тот, от которого будет расчитываться расстояние) и множество объектов obj_1,obj_2,...,obj_n (до которых будет расчитываться расстояние), то функция должна иметь примерно такой вид:
Код AS1/AS2:
_root.get_dist=function(obj_num) {//obj_num - номер объекта
 delta_x = main_obj._x-["obj"+obj_num].targ_x;
 delta_y = main_obj._y-["obj"+obj_num].targ_y;
 return (Math.sqrt((delta_x*delta_x)+(delta_y*delta_y)));
}
Не обязательно использовать именно функцию - можно этот код прямо в цикл вставить))


Последний раз редактировалось udaaff; 26.06.2010 в 22:28.
Старый 26.06.2010, 22:30
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Jitakuzu, оформляйте в следующий раз код.

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

Регистрация: Sep 2008
Сообщений: 102
Jitakuzu спасибо большое!

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

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

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


 


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


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