Я сделал codepen с защелкой: SVG CodepenSVG - Бесконечное вращение принимает точку неправильно центр
Я пытаюсь повернуть SVG-шестерню в бесконечной петле вокруг своей собственной центральной точки. Это работает в Internet Explorer, но не работает в Mozilla-Firefox и Google-Chrome.
Центральная точка в Chrome и Firefox кажется неправильной, поэтому механизм выходит из положения.
Для вращения я использовал следующий код:
function infRotate(el, time, cw) {
var box = el.getBBox();
el.transform('r0,' + box.cx + ',' + box.cy);
if (cw)
el.animate({transform: 'r360,' + box.cx + ', ' + box.cy}, time, mina.linear, infRotate.bind(null, el, time, cw));
else
el.animate({transform: 'r-360,' + box.cx + ', ' + box.cy}, time, mina.linear, infRotate.bind(null, el, time, cw));
}
Что я должен сделать для Firefox и Chrome, чтобы найти правильную точку центра? Спасибо за помощь.
Не полагайтесь на красный прямоугольник, я не уверен, откуда это взялось. Это устанавливается отдельно. Путь находится внутри группы, которая повернута/масштабирована/переведена, а rect не находится внутри группы. Если вы посмотрите на bbox группы и путь, вы увидите, что они разные. Я не уверен, что это проблема, просто отметив, что это может быть что-то проверить. – Ian
Я хочу только вращать передачу, но остаюсь на некотором положении. Красный прямоугольник я нарисовал только, чтобы показать лучше, что шестерня изменит его положение X/Y (и это я не хочу). Если вы сохраните локальный SVG-код и откройте его с помощью inkscape или иллюстратора, вы увидите, что прямоугольник и шестерка ar центрированы, чтобы страница не была сгруппирована. –
Ну, похоже, сейчас работает нормально, я думаю, вы удалили преобразование из группы? – Ian