【发布时间】:2019-05-06 08:43:32
【问题描述】:
我遇到了 snap.svg 的问题,每当我在 269 到 270 度之间设置旋转动画时,整个物体都会围绕整个圆圈旋转,而不是前进一个度数。这是重现问题的最小代码 sn-p:
function testRotation() {
var draw = Snap('#test');
var box = draw.rect(0, 0, 100, 161.5);
var rotation = 268;
var increment = 1;
var transform = 't200,200r'+rotation+',50,80.75';
console.log(transform)
box.attr({
fill: '#000000',
transform: transform});
function rotate() {
if (rotation > 271) increment = -1;
if (rotation < 269) increment = 1;
rotation += increment;
var transform = 't200,200r'+rotation+',50,80.75';
console.log(rotation);
box.animate({transform: transform}, 1000);
setTimeout(rotate, 1000);
}
setTimeout(rotate, 1000)
}
这是一个 JSFiddle 版本,您可以在其中看到它的实际效果:http://jsfiddle.net/qsmzexut/2/
它从 268 度开始,然后每秒将角度增加 1 度。当它从 269 到 270 时,它会一路转来转去。当它达到 272 时,它会回落,然后回升等等。正如您所看到的,这种行为在两个方向上都存在。
有什么方法可以避免这种行为?我希望能够旋转一个度数而不是让它围绕整个圆圈摆动!谢谢。
【问题讨论】:
-
您仍然可以使用 JSFiddle。您只需要在“资源”部分添加指向 Snap 的链接。 Like this
-
好的,谢谢!现在开始工作了:jsfiddle.net/qsmzexut/2
-
@prismofeverything 我不确定我是否理解您正在寻找的行为。您是否试图使矩形在 268 和 272 的角度之间来回摆动?像抖动影响?
-
@flybear 在 268 和 272 之间旋转只是失败的演示。它应该一次平稳地旋转 1 度,但在从 269 到 270 时,它会完全旋转。
标签: javascript animation svg snap.svg