snap.svg 圆周移动物体
snap.svg moving object in a circle
我只想将加载的 SVG 移动一圈。
这是我到目前为止得到的,想法是:"leave the object where it is, rotate it in a circle with a radius of 30":
var svgObject = Snap("svg#object g");
var path = svgObject.path("M0 0 a60 60 0 0 0 30 30");
var pathLength = path.getTotalLength();
Snap.animate(0, pathLength, function(value) {
movePoint = path.getPointAtLength(value);
svgObject.transform('t' + parseInt(movePoint.x) + ',' + parseInt(movePoint.y));
}, 5000, mina.easeOut);
我意识到上面的代码一定比较幼稚,但这是我从互联网上的各种来源收集的。
以上代码所做的只是将对象向右移动。我希望它做一个完整的圆圈(正好在它开始的地方结束)。
我需要更改什么才能使上面的代码按描述工作?
如果包含完整的代码和标记,它总是容易得多。您可能正在尝试转换主要的 svg 对象(正如我所看到的代码已被编辑)而不是转换 g 对象。此外,您的动画路径也不正确。由于未显示标记,我无法对其进行测试,但这是一个有效的示例。
只需修改圆形路径,使其只包含您需要的部分。
var svgObject = Snap("#svgobject");
var groupObject = Snap('#svgobject g');
var path = svgObject.path("M 100, 100m -75, 0a 75,75 0 1,0 150,0a 75,75 0 1,0 -150,0").attr({ fill: 'none' });
var pathLength = path.getTotalLength();
Snap.animate(0, pathLength, function(value) {
movePoint = path.getPointAtLength(value);
groupObject.transform('t' + parseInt(movePoint.x) + ',' + parseInt(movePoint.y));
}, 5000, mina.easeOut);
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.4.1/snap.svg-min.js"></script>
<svg id="svgobject" height="800" width="800">
<g>
<rect x="50" y="50" width="50" height="50"/>
</g>
</svg>
我只想将加载的 SVG 移动一圈。 这是我到目前为止得到的,想法是:"leave the object where it is, rotate it in a circle with a radius of 30":
var svgObject = Snap("svg#object g");
var path = svgObject.path("M0 0 a60 60 0 0 0 30 30");
var pathLength = path.getTotalLength();
Snap.animate(0, pathLength, function(value) {
movePoint = path.getPointAtLength(value);
svgObject.transform('t' + parseInt(movePoint.x) + ',' + parseInt(movePoint.y));
}, 5000, mina.easeOut);
我意识到上面的代码一定比较幼稚,但这是我从互联网上的各种来源收集的。
以上代码所做的只是将对象向右移动。我希望它做一个完整的圆圈(正好在它开始的地方结束)。
我需要更改什么才能使上面的代码按描述工作?
如果包含完整的代码和标记,它总是容易得多。您可能正在尝试转换主要的 svg 对象(正如我所看到的代码已被编辑)而不是转换 g 对象。此外,您的动画路径也不正确。由于未显示标记,我无法对其进行测试,但这是一个有效的示例。
只需修改圆形路径,使其只包含您需要的部分。
var svgObject = Snap("#svgobject");
var groupObject = Snap('#svgobject g');
var path = svgObject.path("M 100, 100m -75, 0a 75,75 0 1,0 150,0a 75,75 0 1,0 -150,0").attr({ fill: 'none' });
var pathLength = path.getTotalLength();
Snap.animate(0, pathLength, function(value) {
movePoint = path.getPointAtLength(value);
groupObject.transform('t' + parseInt(movePoint.x) + ',' + parseInt(movePoint.y));
}, 5000, mina.easeOut);
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.4.1/snap.svg-min.js"></script>
<svg id="svgobject" height="800" width="800">
<g>
<rect x="50" y="50" width="50" height="50"/>
</g>
</svg>