Я собираю тестовую программу для изучения d3.js. Однако я не могу заставить переходы работать. Я несколько раз просматривал документацию и не могу понять, что я делаю неправильно.Я не могу получить переход d3 для работы с requestAnimationFrame
Я предполагаю, что это как-то связано с использованием перехода вместе с requestAnimationFrame, но никакая комбинация поисковых запросов не дает мне полезного ответа. Может ли кто-нибудь сказать мне, где я ошибся?
(function(){
"use strict";
var randArray = [];
(function randomWalk(){
for(var i=0;i<5;i++) randArray[i] = Math.round(Math.random() * 10) % 2? randArray[i]+1 || Math.round(Math.random() * 10) : randArray[i]-1 || Math.round(Math.random() * 10);
setTimeout(randomWalk,800);
})();
(function update(){
var d3 = window.d3 || {},
mySelection = d3.select("div#container").selectAll("div").data(randArray);
mySelection.enter().append("div").text(function(d){return ""+d;});
mySelection.text(function(d){return ""+d;}).transition().style('padding-bottom',function(d,i){return (d*2.5)+'em'});
requestAnimationFrame(update);
})();
})();
Вот jsfiddle: http://jsfiddle.net/Racheet/bPfFY/
Спасибо! отсутствующий период был типом в jsfiddle, он присутствует в моем фактическом коде. Фактический результат, который я ищу, - это то, что вы получаете от этой скрипки, если вы разделите вызов .transition(). RandArray автоматически обновляется каждые 800 миллисекунд, и я пытаюсь сделать плавники плавным переходом, чтобы соответствовать ему. Я дошел до того, что сделал переход, чтобы соответствовать ему, но плавно, похоже, вне меня. Вот почему я использовал вызов перехода(). Вы предлагаете мне вызвать обновление randArray из функции обновления графика? – Racheet
Функция randomwalk используется только для издевательства произвольных данных, поступающих через websocket. Вот почему я пытаюсь найти решение, в котором график и данные обновляются независимо, но все еще имеют соединение с данными. – Racheet
Когда я впервые ответил, я не смотрел внимательно на randomWalk(); просто увидел недостающий период, и мысль вызвала вашу проблему. –