PDA

Просмотр полной версии : Нахождение разницы расстояния между обьектами


Therion
04.06.2006, 17:43
Драсте.
помогите решить проблему, значит есть скрипт, который должен вырешивать разницу в расстоянии одного обьекта к двум другим.
вот собственно скрипт:
i=0
X=0
Y=0
function fun(obj,e){
for(i;i<obj.length;i++){
X+=(obj[i]._x-e._x)
Y+=(obj[i]._y-e._y)}
e._x+=X/2
e._y+=Y/2
trace(Y)
}
_root.onEnterFrame=function(){
fun([p1,p2],dd)
}
после того как разница в растоянии вычеслена, обьект медленно должен становится посреди двух других(надеюсь я понятно выразился)
Так вот проблема в том, что расстояние вырешивается только один раз с самого начала и не вычесляется после передвежения обьекта.
Иными словами часть скрипта
for(i;i<obj.length;i++){
X+=(obj[i]._x-e._x)
Y+=(obj[i]._y-e._y)}Выполняется только один раз,помогите как её зацыклить.

iNils
04.06.2006, 18:00
Тема закрыта до тех пор пока автор не пришлет мне в приват нормально название темы.

iNils
04.06.2006, 18:16
function fun (obj, e) {
var sx = (obj[0]._x - obj[1]._x) / 2 + obj[1]._x;
var sy = (obj[0]._y - obj[1]._y) / 2 + obj[1]._y;
var dx = (sx - e._x) / 10;
var dy = (sy - e._y) / 10;
e._x += dx;
e._y += dy;
if (Math.abs (dx) < 0.1 and Math.abs (dy) < 0.1) {
return false;
} else {
return true;
}
}
_root.onEnterFrame = function () {
var flag = fun ([p1, p2], dd);
if (!flag) {
delete this.onEnterFrame;
}
};

Therion
04.06.2006, 18:26
Гениально, спасибо:)
P.S.
А зачем писать "var"? Без него ведь тоже все работает...

Nirth
04.06.2006, 18:33
написав var мы определили что flag это локальная переменная метода onEnterFrame, таким образом она сама уничтожается когда больше не нужна.
Так же без var переменная сохраниться в _root. зачем лишнее потребление памяти?

Therion
04.06.2006, 18:38
хм, а как сделать перемещение обьекта в центр между тремя или более обьектами?

iNils
04.06.2006, 19:08
function fun (obj, e) {
var x = 0;
var y = 0;
for (var i = 0; i < obj.length; i++) {
x += obj[i]._x;
y += obj[i]._y;
}
x /= (obj.length);
y /= (obj.length);
var dx = (x - e._x) / 10;
var dy = (y - e._y) / 10;
e._x += dx;
e._y += dy;
if (Math.abs (dx) < 0.1 and Math.abs (dy) < 0.1) {
return false;
} else {
return true;
}
}
_root.onEnterFrame = function () {
var flag = fun ([p1, p2, p3, p4, p5], dd);
if (!flag) {
delete this.onEnterFrame;
}
};

Therion
04.06.2006, 20:18
Во,супер...
Низкий тебе поклон:)