让SVG饼图只动画一次
Getting SVG pie chart to only animate once
我得到了这个简单的SVG饼状图加载器(http://css-tricks.com/css-pie-timer/):
)http://jsfiddle.net/frank_o/gFnw9/6/我如何让它只动画一次?帮助我删除不必要的代码。
HTML:<svg width="250" height="250" viewbox="0 0 250 250">
<path id="loader" transform="translate(125, 125) scale(.84)" />
</svg>
JS:
var $loader = $('#loader'),
alpha = 0,
pi = Math.PI,
time = 5;
function draw() {
alpha++;
alpha %= 360;
var r = ( alpha * pi / 180 ),
x = Math.sin( r ) * 125,
y = Math.cos( r ) * - 125,
mid = ( alpha > 180 ) ? 1 : 0,
animate = 'M 0 0 v -125 A 125 125 1 '
+ mid + ' 1 '
+ x + ' '
+ y + ' z';
loader.setAttribute( 'd', animate );
setTimeout(draw, time); // Redraw
};
draw.call(this);
要让它只动画一次,你需要停止调用setTimeout()一旦alpha> 360。然后,您需要确保svg圆圈已完全绘制。
这里是小提琴:http://jsfiddle.net/gFnw9/12/
var $loader = $('#loader'),
alpha = 0,
pi = Math.PI,
time = 5;
function draw() {
alpha++;
var r = ( alpha * pi / 180 ),
x = Math.sin( r ) * 125,
y = Math.cos( r ) * - 125,
mid = ( alpha >= 180 ) ? 1 : 0,
animate = 'M 0 0 v -125 A 125 125 1 '
+ mid + ' 1 '
+ x + ' '
+ y + ' z';
if (alpha < 360){
setTimeout(draw, time); // Redraw
}else{
animate = "M 0 0 v -125 A 125 125 1 1 1 -.1 -125 z";
}
loader.setAttribute( 'd', animate );
};
draw.call(this);
对于SVG,您肯定不必这样做。看看这个很棒的教程。这可能有帮助。
教程相关文章:
- jQuery:试图让动画每3秒发生一次,但没有成功
- jQuery+Animate.css动画只工作一次,动画不会重置
- HTML画布-使动画一次发生一个,而不是同时发生多个
- 为jquery设置动画,一次设置一个对象
- 菜单在每单击一次时切换不同的动画
- jQuery - 在一个会话中仅运行一次动画
- 如何一次为多个事物设置动画
- CSS 动画只工作一次
- 如何阻止 CSS3 动画在播放一次后运行并调用新动画
- 如何让动画在视口中启动一次
- 一次对一个进度条进行动画处理
- jQuery 动画运行一次
- 动画 GIF 背景仅显示一次
- 为什么单击时的关键帧动画只触发一次
- 每次单击一次迭代两个数组并制作动画
- 在滚动时制作一次动画
- JavaScript动画,图像动画只动画一次
- 每3秒重复一次动画
- 在单击按钮时使用同位素对数据进行排序,目前只运行一次动画
- ScrollMagic Tween:向前只播放一次动画