PDA

Просмотр полной версии : движение группы объектов за мышью


mayday
22.07.2008, 14:50
Помогите, пожалуйста, впарился из-за мелочи..

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

пока ничего кроме как ...
this.onEnterFrame = function (){
mc1._x = mc1._x + (_xmouse - mc1._x) / 15;
mc1._y = mc1._y + (_ymouse - mc1._y) / 15;

mc2._x = mc2._x + (_xmouse - mc2._x) / 10;
mc2._y = mc2._y + (_ymouse - mc2._y) / 10;

mc3._x = mc3._x + (_xmouse - mc3._x) / 5;
mc3._y = mc3._y + (_ymouse - mc3._y) / 5;
}
... сообразить не смог :confused:
но это совсем не то.

приложил исходник на всякий случай

Alex_beginner
22.07.2008, 15:03
Здравствуйте mayday! Был бы очень признателен если бы Вы выложили файл в формате Flash8.

mayday
22.07.2008, 15:08
Здравствуйте mayday! Был бы очень признателен если бы Вы выложили файл в формате Flash8.

обновил первый пост.
спасибо.

Alex_beginner
22.07.2008, 15:13
mayday! Посмотрел исходник, идентифицировать проблему не смог. Можно рассказать по-подробнее.

mayday
22.07.2008, 15:19
надо сделать чтобы прямоугольники двигались за мышкой как показано на картинке в первом посте.. как бы такое "слежение за курсором" .. даже не знаю как нормально это объяснить )

код, который у меня, он неправильный.

Alex_beginner
22.07.2008, 15:27
Я думаю для определения проблемы недостаточно одной картинки. Предлагаю изложить проблему детально, по пунктам и желательно с определенными условиями динамики движения. Ну например, объекты должны двигаться за мышью на сокращая расстояние между объектами менее некоей величины.
Потом, если есть готовый пример такого слежения (скажем сайт или прога какая!) лучше его показать, потому что один раз увидеть, лучше, чем 100 раз услышать.

mayday
22.07.2008, 15:50
лучше его показать, потому что один раз увидеть, лучше, чем 100 раз услышать.

во! :)

Alex_beginner
22.07.2008, 15:52
Вот теперь понятно. Буду думать.

crazyone
22.07.2008, 17:12
Что-то типа:
var cx=250;
var cy=125;
var mcs=new Array(mc1,mc2,mc3);
this.onEnterFrame = function (){


var dx=cx-Math.abs(_xmouse-cx);

var dy=cy-Math.abs(_ymouse-cy);
ddx=dx/(mcs.length+1);
ddy=dy/(mcs.length+1);
for(var i=0; i<mcs.length; i++){
if(_xmouse<cx){
mcs[i].fx=mcs[i]._width/2+ddx*(i+1);
}else{
mcs[i].fx=Stage.width-mcs[i]._width/2-ddx*(i+1);
}
if(_ymouse<cy){
mcs[i].fy=mcs[i]._height/2+ddy*(i+1);
}else{
mcs[i].fy=Stage.height-mcs[i]._height/2-ddy*(i+1);
}

mcs[i]._x+=(mcs[i].fx-mcs[i]._x)/5;
mcs[i]._y+=(mcs[i].fy-mcs[i]._y)/5;
}
}

H!t
22.07.2008, 17:27
держи

mayday
22.07.2008, 18:38
всем спасибо большое!

crazyone, а как сделать "границы", внутри которых происходил бы этот экшен ?
грубо говоря, есть прямоугольник размером скажем 500 на 250.. и если курсор выходит за его пределы, то прямоугольники прекращают слежение.

UPD: а, все, сообразил :)