3

我无法弄清楚如何为 protovis 流图制作动画。我认为最好的方法是简单地将一组i, j索引传递给.layers()并让.x()and.y()函数查找实际的更新值。有没有更简单的方法?

4

1 回答 1

2

你不能在每次渲染之前更新数据吗?假设数据已经改变,我不确定我是否看到这样做的好处,因为我认为整个 vis 需要重新渲染。

function getData(offset) {
   // get/create your data here, maybe seeded with an offset
}

var offset = 0;

// ... define scales and stuff

var vis = new pv.Panel()
    .width(w)
    .height(h);

vis.add(pv.Layout.Stack)
     // wrap in a function to re-evaluate on render
    .layers(function() getData(offset))
    .offset("wiggle")
    .x(x.by(pv.index))
    .y(y)
.layer.add(pv.Area);

// use setInterval to animate
setInterval(function() { 
    offset++; // still working on the offset idea
    vis.render(); 
}, 20);

这似乎可行,尽管这实际上取决于您要创建哪种动画 - 对于某些类型的动画,可能有更有效的方法。

于 2011-01-31T22:11:23.190 回答