Я не слишком знаком с AS3, но вот простой способ сделать это.
Я предполагаю, что ваш объект уже хранит координату x (я назову это object.x).Добавьте свойство «v» (для скорости) к своему объекту и установите его равным 0, а также добавьте свойство «масса», которое может быть равно 1, если вы просто хотите, чтобы объект привязывался к мыши.Когда объект щелкают, вызовите следующий код:
var animLoopID:uint = setInterval(function():void {
// this will run every 100ms in order to animate the object
// and will stop once the mouse is raised and the object has come to rest
// if the mouse is still down, we want the object to follow it
// i don't know the right syntax for this, but this should give you an idea
if (mouseDown) {
object.v = (mouseX - object.x)/object.mass;
// if you make this object.v += ..., the object will
// oscillate around the mouse instead of snapping to it
// and you'll have to increase your mass accordingly
// to keep it from slinging around wildly
}
else if (Math.abs(object.v) > 0.0001) { // 0.0001 to avoid rounding errors
object.x += object.v;
object.v *= 0.95; // friction -- the closer to 1, the less friction
// you may also consider doing some bounds-checking on x here
}
else {
// the mouse isn't dragging and the object is at rest...we're done :)
clearInterval(animLoopID);
}
}, 100);
Я понятия не имею, насколько хорошая идея сделать это в AS3, но это начало, я полагаю.Это не совсем правильно и с физической точки зрения ... Я действительно должен посмотреть уравнения движения и написать правильное решение.