PDA

Просмотр полной версии : Help! програмная анимация


rusich
18.06.2005, 21:54
помогите пожалуйста, нужно сделать обект(стрелка) , который вращается вокруг своей оси... + под углом... т.е. нужно сделать, чтобы эта стрелка програмно менялась... и крутилась за мышкой... короче как часовая стрелка, но за мышкой... надеюсь понятно обьяснил... заранее всем спасип)

old_dark_elf
18.06.2005, 23:56
В общем тебе нужно только вычислить угол поворота твоего обьекта...
Зная координаты (x;y) обьекта и мыши, находим нужный угол через арктангенс...

должно получиться что-то типа:
_root.onEnterFrame = function() {
tvoi_obekt._rotation=-Math.atan2(tvoi_obekt._x-_root._xmouse,tvoi_obekt._y-_root._ymouse)/(Math.PI/180)-90;
}

Штрек
19.06.2005, 00:27
strelka.onMouseMove=function(){
this._rotation=180+180/Math.PI*Math.atan2(this._y-this._parent._ymouse,this._x-this._parent._xmouse)
}

rusich
19.06.2005, 01:49
а будет ли при этом меняться размер стрелки? если смотреть под углом , то дальний конец должен быть короче чем ближний...

rusich
19.06.2005, 01:55
и мог бы кто исходник кинуть ...хотяб на простых линиях,а то так что-то понять не выходит

Nirth
19.06.2005, 04:42
причем тут размер О_о ? она у тебя на плоскости лежит? так бы сразу и сказал.

посмотри вот сюда http://codylindley.com/Tutorials/trigonometry/index.htm

_Sasha_
19.06.2005, 17:53
Посмотри в Samples исходник Movement-pointer_or_click.fla
Там то что тебе надо! ;)

_Sasha_
19.06.2005, 18:02
Создаешь маленькую точку и привязываешь ее к курсору
(StartDrag(_root.dot,true);)
Затем на кадре пишешь:
with (strelka) {
initx = _x;
inity = _y;
}
_root.onEnterFrame = function() {
with (dot) {
delta_x = _x-initx;
delta_y = _y-Inity;
radians = Math.atan2(delta_y, delta_x);
degrees = Math.floor(radians/(Math.PI/180));
strelka._rotation = 90+degrees;
}
};
Работает на 100%. ;)

Штрек
19.06.2005, 18:46
я ж всё написал,
чего ж там непонятного....
см.исх........

rusich
20.06.2005, 14:59
всем большое спасибо ) разобрался ))) :d