D3动画中的阴影滤镜的替代方案

时间:2017-08-10 12:57:51

标签: javascript animation d3.js maps

我使用D3创建了一个动画,其中包含一个类似于this one的世界地图。动画包括沿着某些弧移动飞机图标,就像在this article中一样。

请注意,国家/地区的轮廓使用阴影突出显示,使用以下代码生成:

var filter = svg.append("defs")
    .append("filter")
    .attr("id", "drop-shadow")
    .attr("height", "130%");
filter.append("feGaussianBlur")
    .attr("in", "SourceAlpha")
    .attr("stdDeviation", 5)
    .attr("result", "blur");

var feMerge = filter.append("feMerge");
feMerge.append("feMergeNode")
    .attr("in", "offsetBlur")
feMerge.append("feMergeNode")
    .attr("in", "SourceGraphic");

...

svg.insert("path", ".map")
    .datum(topojson.feature(countries, countries.objects.land))
    .attr("class", "land")
    .attr("d", path)
    .style("filter", "url(#drop-shadow)");

不幸的是,这个阴影在我的动画循环中耗费了大量的性能(尽管阴影本身没有动画):

perfo benchmark

  • 是否可以防止每次重新计算阴影? (因为它总是在同一个位置并以相同的方式呈现)
  • 是否有更轻/更快的阴影替代品会产生类似的视觉效果?

0 个答案:

没有答案