![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2005
Сообщений: 785
|
Как можно среди нескольких объектов найти тот который ближе всего?
вот так нахожу расстояние, теперь думаю что делать дальше то...
__________________
Нано-флешер (в отставке) Последний раз редактировалось Therion; 16.05.2007 в 00:45. |
|
|||||
|
Регистрация: Aug 2005
Сообщений: 785
|
ну да ,но как выбрать наименьшее число из 5 значений?
Math.min ведь только для двух чисел работает...тем более как-то надо потом узнать какое число какому объекту соответствует...
__________________
Нано-флешер (в отставке) |
|
|||||
|
ветеран форума
|
Создать переменную, например объект с 2мя свойствами: ссылка на объект и расстояние. В цикле: сли расстояние меньше, то сменить расстояние и ссылку на новые
__________________
4am is time to rock |
|
|||||
|
Регистрация: Aug 2005
Сообщений: 785
|
я вот сейчас над этим и мучаюсь
![]()
__________________
Нано-флешер (в отставке) |
|
|||||
|
|
|
|||||
|
Регистрация: 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;
Корень извлекать тоже кстати не обязательно. Последний раз редактировалось Kikasso; 16.05.2007 в 01:22. |
|
|||||
|
Регистрация: Aug 2005
Сообщений: 785
|
хм
счаз попробуем ![]()
__________________
Нано-флешер (в отставке) |
|
|||||
|
Регистрация: 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);
};
где я протупил? ![]()
__________________
Нано-флешер (в отставке) |
|
|||||
|
Регистрация: 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, время: 07:47. |
|
|
« Предыдущая тема | Следующая тема » |
|
|