PDA

Просмотр полной версии : Плавное перемещение MovieClip на место клика мыши, с поворотом в направлении цели


TaNda
27.05.2010, 17:27
Очень нужна ваша помощь!!

Ситуация такая:
При клике мыши в какой-то точке, из точки с определенными координатами должен вылететь MovieClip в точку клика. Долетев до точки, клип должен исчезнуть (ну это понятно HitTest).

Главных проблем две:

1. Клип должен быть повернут в сторону клика мыши.
2. И как попроще реализовать плавность?

rainbowrussia
27.05.2010, 17:55
0) HitTest вроде тут не в тему
1) mc._rotation, Math.atan или atan2
2) Tween

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

TaNda
27.05.2010, 20:00
делала я Tween, не работает он так как нужно - он вообще для этого ли создан?

rainbowrussia
27.05.2010, 21:21
Вот код, во вложении исходник:


import mx.transitions.Tween;
import mx.transitions.easing.*;


back.onRelease = function () {

if (this.tw1) { this.tw1.stop(); }
if (this.tw2) { this.tw2.stop(); }
if (this.tw3) { this.tw3.stop(); }

obj._visible = true;

var len = 30;

var angle = 180 * Math.atan2(this._ymouse - obj._y, this._xmouse - obj._x) / Math.PI;

if (Math.abs(angle + 360 - obj._rotation) < Math.abs(angle - obj._rotation)) {
angle += 360;
}
if (Math.abs(angle - 360 - obj._rotation) < Math.abs(angle - obj._rotation)) {
angle -= 360;
}

this.tw1 = new mx.transitions.Tween(obj, "_rotation", Strong.easeOut, obj._rotation, angle, len);
this.tw2 = new mx.transitions.Tween(obj, "_x", Strong.easeOut, obj._x, this._xmouse, len);
this.tw3 = new mx.transitions.Tween(obj, "_y", Strong.easeOut, obj._y, this._ymouse, len);
this.tw1.onMotionFinished = function() {
obj._visible = false;
delete(back.tw1);
delete(back.tw2);
delete(back.tw3);
};

}


back - фон, по которому кликаем, obj - объект, повернут вправо, точка привязки на "конце".

TaNda
27.05.2010, 21:24
rainbowrussia, спасибо огромнейшее!! Я даже не надеялась на такую помощь, век не забуду! =)