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

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

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

Регистрация: Aug 2005
Сообщений: 785
По умолчанию Ближайшый объект

Как можно среди нескольких объектов найти тот который ближе всего?
Код:
for(i=0;i<part.length;i++){
			X=part[i]._x-this._x
			Y=part[i]._y-this._y
			D=Math.sqrt(X*X+Y*Y)
			trace(D)
		}
вот так нахожу расстояние, теперь думаю что делать дальше то...
__________________
Нано-флешер (в отставке)


Последний раз редактировалось Therion; 16.05.2007 в 00:45.
Старый 16.05.2007, 00:51
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

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

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

Регистрация: Aug 2005
Сообщений: 785
ну да ,но как выбрать наименьшее число из 5 значений?
Math.min ведь только для двух чисел работает...тем более как-то надо потом узнать какое число какому объекту соответствует...
__________________
Нано-флешер (в отставке)

Старый 16.05.2007, 01:06
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 4  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Создать переменную, например объект с 2мя свойствами: ссылка на объект и расстояние. В цикле: сли расстояние меньше, то сменить расстояние и ссылку на новые
__________________
4am is time to rock

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

Регистрация: Aug 2005
Сообщений: 785
я вот сейчас над этим и мучаюсь
__________________
Нано-флешер (в отставке)

Старый 16.05.2007, 01:14
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 6  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Код:
minD = part[0]._x-this._x;
obj = part[0];
for(i=1;i<part.length;i++)
{
     X=part[i]._x-this._x
     Y=part[i]._y-this._y
     D=Math.sqrt(X*X+Y*Y)

     if(D<minD) { minD = D; obj = part[i];}
                 
}
trace(obj+ ' '+minD);
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Код:
var parts:Array = new Array();
for (var p in this ) if(typeof(this[p]) == "movieclip") parts.push( this[p] );
//trace(parts);
function findNearest(){
var arr:Array = new Array();
for(var i=0;i<parts.length;i++){
 var mc:MovieClip = parts[i];
 var dx:Number = mc._x-_xmouse;
 var dy:Number = mc._y-_ymouse;
 var d2:Number = (dx*dx +dy*dy);
// arr.push({ d:d2, i:i });
 arr.push({ d:d2, mc:mc });
}
arr.sortOn('d' ,Array.NUMERIC);
//var nearest:MovieClip = parts[arr[0].i];
var nearest:MovieClip = arr[0].mc;
nearest.play();
}
onEnterFrame = findNearest;
Что-то протупил, сортировка не нужна, Miramax прав.
Корень извлекать тоже кстати не обязательно.


Последний раз редактировалось Kikasso; 16.05.2007 в 01:22.
Старый 16.05.2007, 01:21
Therion вне форума Посмотреть профиль Отправить личное сообщение для Therion Найти все сообщения от Therion
  № 8  
Ответить с цитированием
Therion
 
Аватар для Therion

Регистрация: Aug 2005
Сообщений: 785
хм
счаз попробуем
__________________
Нано-флешер (в отставке)

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

Регистрация: Aug 2005
Сообщений: 785
попытался разобрать код мирамакса
пишу так
Код:
A.onEnterFrame = function() {
	part[A1, A2, A3];
	minD = part[0]._x-this._x;
	obj = part[0];
	for (i=1; i<part.length; i++) {
		X = part[i]._x-this._x;
		Y = part[i]._y-this._y;
		D = Math.sqrt(X*X+Y*Y);
		if (D<minD) {
			minD = D;
			obj = part[i];
		}
	}
	trace(obj+' '+minD);
};
выдаёт "undefined NaN"
где я протупил?
__________________
Нано-флешер (в отставке)

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Вот чтобы оправдать сортировку:
Код:
var parts:Array = new Array();
for (var p in this ) if(typeof(this[p]) == "movieclip") parts.push( this[p] );
//trace(parts);
function findNearest(){
var arr:Array = new Array();
for(var i=0;i<parts.length;i++){
 var mc:MovieClip = parts[i];
 var dx:Number = mc._x-_xmouse;
 var dy:Number = mc._y-_ymouse;
 var d2:Number = (dx*dx +dy*dy);
 arr.push({ d:d2, mc:mc });
}
 arr.sortOn('d', Array.NUMERIC);
 var nearest:MovieClip = arr[0].mc;
 arr.reverse();
for(i=0;i<arr.length;i++){
 var mc = arr[i].mc;
 mc._xscale = mc._yscale = 100 + 20*i;
 mc.swapDepths( 1000 + i);
 }
 nearest.play();
}
onEnterFrame = findNearest;

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

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

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


 


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


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