在JQuery中使图像遵循循环路径的最佳方法是什么?

时间:2014-01-07 09:17:31

标签: javascript jquery path jquery-animate

我有一个图像(红色,下面),我想沿着圆形路径行进。红色图像应始终与开始时位于同一位置。

备注: 灰色圆形路径是不可见的。我只是强调它将遵循的道路。

实现此技术的最佳方法/库是什么?

Image, following a path

2 个答案:

答案 0 :(得分:3)

你真的需要一个图书馆,这并不难吗

$(document).ready(function (e) {
    var startAngle = 0;
    var unit = 215;

    var animate = function () {
        var rad = startAngle * (Math.PI / 180);
        $('.circle').css({
            left: 250 + Math.cos(rad) * unit + 'px',
            top: unit * (1 - Math.sin(rad)) + 'px'
        });
        startAngle--;
    }
    var timer = setInterval(animate, 10);
});

FIDDLE

这是一个循环,停在同一个地方等等。

$(document).ready(function (e) {
    var startAngle = 180;
    var unit = 215;

    var animate = function () {
        if (startAngle > -180) {
            var rad = startAngle * (Math.PI / 180);
            $('.circle').css({
                left: 250 + Math.cos(rad) * unit + 'px',
                top: unit * (1 - Math.sin(rad)) + 'px'
            });
            startAngle--;
            setTimeout(animate, 10);
        }
    }

    $('.circle').on('click', function() {
        startAngle = 180;
        animate();
    });

});

FIDDLE

答案 1 :(得分:0)

请查看以下链接:

  • CSS Technique
  • Stackoverflow答案:Answer 1 || Answer 2
  • JSFiddle:Fiddle 1

     var t = 0;
    
     function moveit() {
       t += 0.05;
    
       var r = 100;
       var xcenter = 100;
       var ycenter = 100;
       var newLeft = Math.floor(xcenter + (r * Math.cos(t)));
       var newTop = Math.floor(ycenter + (r * Math.sin(t)));
       $('#friends').animate({
         top: newTop,
         left: newLeft,
       }, 1, function() {
       moveit();
      });
     }
    
     $(document).ready(function() {
        moveit();
     });