我有一个基于force-collapsable example的可视化,我想加快或跳过初始节点运动,以尽快使图形达到平衡。
我已遵循此answer中的建议并从我的代码中调用了tick(),但它在force-collabsable示例中不起作用,因为强制对象上没有tick或alpha方法。 / p>
继修改之后我的代码看起来是什么样的,我已经删除了on tick调用并在最后添加了force.tick()调用:
var force = d3.layout.force() // line 38 in the example
//.on("tick", tick) // commented out as I call tick instead
.charge(function(d) { return d._children ? -d.size / 100 : -30; })
.linkDistance(function(d) { return d.target._children ? 80 : 30; })
.size([w, h - 160]);
function update() { // line 56 in the example
var nodes = flatten(root),
links = d3.layout.tree().links(nodes);
force // line 60 in the example
.nodes(nodes)
.links(links)
.start();
force.tick() // added by me to cause a tick and the point of error
但是调用因'未捕获的TypeError:undefined不是函数'而失败,因为该方法不存在。
当我调用它时,强制对象具有以下值(从Chrome调试器中获取):
charge: function (x) {
distance: function (x) {
drag: function () {
friction: function (x) {
gravity: function (x) {
linkDistance: function (x) {
linkStrength: function (x) {
links: function (x) {
nodes: function (x) {
on: function (type, listener) {
resume: function () {
size: function (x) {
start: function () {
stop: function () {
theta: function (x) {
proto: Object
为什么此示例中的force对象与不使用树布局的其他force布局示例不同?我怎么能直接打电话给tick()?
答案 0 :(得分:0)
我发现如果我删除了对d3.geom.js和d3.layout.js的引用,我可以调用tick()并且在没有这些文件的情况下对我的布局没有负面影响。