在Raphael JS中制作弧形动画在Chrome中摇摆不定

时间:2012-02-20 12:54:45

标签: raphael

我在动画中看到一个恼人的摇晃,我已经删除了包含实际动画的代码:

var side = 400;
var paper = new Raphael($(this), 100, side);

paper.customAttributes.arc = function (xloc, yloc, value, total, R) {


                var alpha = 360 / total * value,
                    a = (90 - alpha) * Math.PI / 180,
                    x = xloc + R * Math.cos(a),
                    y = yloc - R * Math.sin(a),
                    path;
                if (total == value) {
                    path = [
                        ["M", xloc, yloc - R],
                        ["A", R, R, 0, 1, 1, xloc - 0.01, yloc - R]
                    ];
                } else {
                    path = [
                        ["M", xloc, yloc - R],
                        ["A", R, R, 0, +(alpha > 180), 1, x, y]
                    ];
                }
                return {
                    path: path
                };
            };

            var arcWidth = 180 - 120;
            var strokeRadius = (120 + arcWidth/2);

            var indicatorArc = paper.path().attr({
                "stroke": "#4B6384",
                "stroke-width": 100,
                arc: [side/2, side/2, 0, 100, strokeRadius]
            });

            indicatorArc.animate({
                arc: [side/2, side/2, 75, 100, strokeRadius]
            }, 1500, "<>", function(){
                // anim complete here
            });

我已经把它放在一个jsfiddle中供你自己查看,请检查firefox和chrome,你会注意到chrome的边缘有很大的摆动,有什么办法可以消除这个吗?

在这里摆弄:run many times

1 个答案:

答案 0 :(得分:1)

所以我知道这已经超过两年了,但如果有人遇到这个问题,那就是Chrome 2D绘图引擎中的一个已知错误。

https://code.google.com/p/skia/issues/detail?id=2769