gpt4 book ai didi

javascript - snap.svg 在圆圈中移动对象

转载 作者:行者123 更新时间:2023-11-30 16:37:06 28 4
gpt4 key购买 nike

我只想将加载的 SVG 移动一圈。这是我到目前为止得到的,想法是:“将对象留在原处,将其旋转一个半径为 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>

关于javascript - snap.svg 在圆圈中移动对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32568250/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com