Ваша ошибка в этой строке:
svgItem.position = view.center + event.delta;
Внутри функции обработчика событий mousedrag
, event.delta
фактически представляет вектор между последней точкой и текущей точкой. Вы неправильно вычислили нужную позицию, просто добавив этот вектор для просмотра центральной точки.
Вместо этого вы хотите добавить этот вектор к текущей позиции элемента.
svgItem.position += event.delta;
Вот эскиз , демонстрирующий решение.
// draw a circle
var item = new Path.Circle({
center: view.center,
radius: 50,
fillColor: 'orange'
});
// on mouse drag...
function onMouseDrag(event) {
// ...if shift is pressed...
if (event.modifiers.shift) {
// ...move item
item.position += event.delta;
}
}
// display instructions
new PointText({
content: 'press shift and drag to move the circle',
point: view.center + [0, -50],
justification: 'center'
});