Мне нужен способ моделирования сопротивления с помощью плагина jQueryUI draggable (аналогично этот эффект). В нижней части перетаскиваемой документации упоминается:
"Чтобы манипулировать положением перетаскиваемого во время перетаскивания, вы можете либо используйте обертку в качестве перетаскиваемого помощника и поместите обернутый элемент с абсолютным позиционированием, или вы можете исправить внутренние значения следующим образом: $(this).data('draggable'). offset.click.top - = x".
Геометрия, не являющаяся моим сильным костюмом, я искал помощь в том, как наилучшим образом добиться эффекта сопротивления при перетаскивании чего-то. Я думал, что используя этот совет выше, я мог бы изменить расстояние, которое перетаскивает, перемещается с помощью геометрической функции. Я не уверен, что лучший термин - сопротивление или эластичность, но Im ищет ощущение, будто элемент прикреплен к точке резиновой лентой или шнуром банджи, так что чем дальше вы тащите, тем меньше движется объект.
Например, скажем, я хочу перетащить объект на 500 пикселей (в любом направлении). Я бы хотел, чтобы эффект сопротивления увеличивался ближе к 500 пикселям от начальной точки, которую я получаю. Ive огляделся и не видел ничего подобного.
Обновление
Я создал базовый jsFiddle, который вычисляет расстояние, на которое элемент был перетащен на http://jsfiddle.net/Z8m4B/
Вычисление:
var x1=x2=y1=y2=0;
$("#draggable").draggable({
start: function(e, ui) {
y1 = ui.position.top;
x1 = ui.position.left;
},
stop: function(e, ui) {
y2 = ui.position.top;
x2 = ui.position.left;
dist = parseInt(Math.sqrt(Math.pow((x2-x1),2)+Math.pow((y2-y1),2)), 10);
console.log(dist);
}
});
Очевидно, я хотел бы изменить расстояние во время события перетаскивания, а не на остановке. Кто-нибудь знает, как создать функцию сопротивления или растяжения?