скажем, у меня есть этот d3 полигон:Loop D3 анимация многоугольника вершины
var dataset = [100, 70, 50, 90, 110, 20]
//data for my line
var lineData = [];
for (var value in dataset){
lineData.push( [{ "x": 0, "y":200 }, { "x": 60, "y": 200},
{ "x": 30, "y": dataset[value]}]
);
}
//This is the accessor function we talked about above
var lineFunction = d3.svg.line()
.x(function(d) { return d.x; })
.y(function(d) { return d.y; })
.interpolate("linear");
//The SVG Container
var svgContainer = d3.select("body").append("svg")
.attr("width", 200)
.attr("height", 200);
//The line SVG Path we draw
var lineGraph = svgContainer.append("path")
.attr("d", lineFunction(lineData[value]))
.attr("fill", "teal")
.attr("opacity", "0.2");
(частично любезно https://www.dashingd3js.com/svg-paths-and-d3js)
Я хотел бы вершину моего треугольника, чтобы при изменении его у позиции (например, хранится в моем Yvertex var), зацикливая значения в моем наборе данных.
Прямо сейчас я передаю данные, чтобы написать треугольник linedata [значение] var, поэтому в конце концов я получаю треугольник, имеющий вершину в позиции последнего значения в наборе данных. Я предполагаю, но я, вероятно, ошибаюсь, что дом мгновенно перемещается между моими значениями и останавливается в последний раз. Итак, есть ли способ сказать, что D3 занимает время, начинающееся с первого значения и медленное, до последнего значения в наборе данных, а затем из последнего значения вернитесь к первому и зациклируйте переход?
Я надеюсь, что было бы как можно яснее, я с нетерпением жду вашей помощи!
Я понимаю, как функция работает в настоящее время, спасибо Грег! Но есть ли способ сделать это циклом, не нажимая на него? Я в основном хочу, чтобы форма моего полигона продолжала меняться. Я попытался установить его на «загрузке», но идентификатор, похоже, не работает ... Еще раз спасибо! – Neurone00
Что-то вроде этого, может быть? 'var idx = 0; переменная цикла = функция() { \t \t рёберный граф \t .transition() \t \t .attr ('d', lineFunction (lineData [IDX])) \t IDX ++; \t if (idx> = dataset.length) idx = 0; } setInterval (цикл 500) ' см обновленный вариант здесь: http://tributary.io/inlet/9061336 Если это поможет, пожалуйста, примите ответ :) –
Brilliant! Великая помощь Грегу. – Neurone00