如何沿弧线为图像设置动画

Posted

技术标签:

【中文标题】如何沿弧线为图像设置动画【英文标题】:How to animate an image along an arc 【发布时间】:2013-11-08 08:03:03 【问题描述】:

我想沿弧线的路径为图像制作动画。这条弧线是圆周长的 45o 段。

我了解以前最简单的方法是使用 https://github.com/weepy/jquery.path,但此代码似乎已失效(演示不再适用于 Chrome)。

否则我该怎么做?

【问题讨论】:

【参考方案1】:

您可以在动画中使用step 回调来制作您自己的自定义效果。动画一些没有可见效果的属性,并从中设置坐标:

$('div').css( fontSize: 0 ).animate(
    fontSize: 45
,
    duration: 2000,
    easing: "swing",
    step: function(t, fx)
        var a = t / 57.296; // from degrees to radians
        var x = 100 + Math.cos(a) * 50;
        var y = 100 + Math.sin(a) * 50;
        $(this).css( left: x, top: y );
    
);

演示:http://jsfiddle.net/Guffa/a9eXE/

【讨论】:

谢谢,如何设置度数或圆半径? @alias51:示例从0度到45度循环,半径为50,圆心为100100。 太好了,谢谢。有什么可以让这更顺畅吗?在我的浏览器(Chrome 30)中它有点生涩。 @alias51:据我所知,浏览器会将坐标四舍五入到最近的像素,这使得路径有点锯齿状。如果您查看 jQuery.path 演示中较慢的元素之一,您会发现它们实际上并没有平滑移动,但是有太多元素在移动,除非您寻找它,否则您看不到它。跨度> @Guffa 有一种方法可以平滑它:缓动。如果你在 jQuery 中使用默认的缓动,你可能不会总是得到最好的结果。如果您还使用 jQuery UI,您将获得更多提供更好动画的选项。我在小提琴中所做的只是添加了 jQuery UI 和一定的缓动,它非常流畅:jsfiddle.net/6mn7Loms 如果它加速到 1000 毫秒,它看起来会更好

以上是关于如何沿弧线为图像设置动画的主要内容,如果未能解决你的问题,请参考以下文章

如何使用贝塞尔曲线沿路径为图像设置动画

跨弧的CSS动画[重复]

如何将插入符号形状动画化为平滑的弧线?

Qt动画椭圆沿圆

沿 konva 中的线或路径为形状设置动画

画布,使用正弦波沿方形路径为形状设置动画