在仪表图中动画针运动

时间:2015-06-11 20:10:31

标签: javascript jquery jquery-animate

我正在使用解决方案here绘制速度计量表。这是使用Flot图表构建的。我试图动画针的动作。我希望针从头到尾缓慢移动。

这是我到目前为止所拥有的。

updatePlot = function(actual_length){

        var data = [[0,0],positionOnArc(actual_length * 100)];
        $('.gauge-div').delay( 8000 ).plot([data], options);

    }

    //The logic: devide one move into 25 moves and add a delay between each move

    var diff_length = Math.abs(prev_move_length - move_length) / 25;

    for(var i=0; i<25; i++) {

        if (prev_move_length < move_length) {
            var actual_length = prev_move_length + i * diff_length;
        } else {
            var actual_length = prev_move_length - i * diff_length;
        }

        setTimeout(updatePlot(actual_length), 1000);
    }

正如您所见,我试图使用setTimeoutdelay来延迟循环迭代。但是我无法为针的运动制作动画。

你能帮我解决一下吗?

先谢谢。

1 个答案:

答案 0 :(得分:1)

使用jquery animate(找到here)是一种聪明的方法,可以通过传入我们自己的步骤函数,在这种情况下会移动指针。

示例代码:

var updatePlot = function(pos) {        
    var data = [[0,0],positionOnArc(pos)];
    $('#placeholder').plot([data], options);
};

// starting position   
updatePlot(0);

$({foo:0})              // from 0 to
.delay(1000)            // (wait for it..)
.animate({foo:100}, {   // 100
    step: updatePlot,
    duration: 4300      // in 4.3 seconds
}).animate({foo:0}, {   // and back to 0
    step: updatePlot,
    duration: 1000      // in 1 second
});

小提琴:http://jsfiddle.net/YGcYJ/217/