Я работаю над солнечными лучами на основе масштабируемых солнечных лучей Майка Бостока.
Я хочу иметь возможность изменять базовые данные, используя совершенно новый JSON (который имеет ту же структуру, но разные значения «размера»), и чтобы солнечные лучи анимировали переход, чтобы отразить обновленные данные.
Если я изменю данные элементов пути с помощью .data(), а затем попытаюсь обновить следующим образом:
path.data(partition.nodes(transformed_json))
.transition()
.duration(750)
.attrTween("d", arcTween(transformed_json));
(.. это почти тот же код, что и щелчок fn)
function click(d) {
path.transition()
.duration(750)
.attrTween("d", arcTween(d));
}
... Я обнаружил, что солнечные лучи правильно меняются, отражая новые данные, но они встают на место, а не плавно переходят, как это происходит при увеличении.
http://jsfiddle.net/jTV2y/ ‹-- Вот jsfiddle с изолированной проблемой (переход происходит через одну секунду после того, как вы нажмете «Выполнить»)
Я предполагаю, что мне нужно создать другой arcTween() fn, но моего понимания d3 еще нет. Большое спасибо!