Я хочу вращать svg-круги с помощью mousemove/touchmove одним указательным пальцем.
Я испробовал множество js-скриптов (например, Touchy Wheel Demo и Rotate Dial Demo), и их примеры работают отлично, но когда я пробую свой пример, я всегда вижу две ошибки:
- Вращение работает только в нижней части кругового, в верхней части - обратное вращение.
- Вращение работает очень медленно (в демо колеса сильно следуют за мышью/пальцем).
Моя демонстрация: https://jsfiddle.net/0L87uabc/8/ (пожалуйста, посмотрите, как это работает на демонстрационной странице автора ранее)
Также я пробую этот простой пример - результат аналогичен приведенному выше:
var dragging = false
$(function() {
var circles = ['circle-l1', 'circle-l2', 'circle-l3', 'circle-l4', 'circle-l5', 'circle-l6', 'circle-l7'];
$.each(circles, function(ind, val) {
var target = $('#'+val)
target.mousedown(function() {
dragging = true
})
$(document).mouseup(function() {
dragging = false
})
target.mousemove(function(e) {
if (dragging) {
var mouse_x = e.pageX;
var mouse_y = e.pageY;
var radians = Math.atan2(mouse_x - 10, mouse_y - 10);
var degree = (radians * (180 / Math.PI) * -1) + 90;
target.css('transform', 'rotate(' + degree + 'deg)');
}
});
});
});
Домо2: https://jsfiddle.net/0L87uabc/10/
Можете ли вы объяснить, почему мой svg не вращается правильно и как это исправить (или вы знаете лучший скрипт для этого)?