【问题标题】:How to move nodes to a desired position?如何将节点移动到所需位置?
【发布时间】:2012-08-26 12:23:12
【问题描述】:

我想将特定节点(比如我有节点引用)移动到所需位置(比如画布的左上角)。我尝试在示例项目中做类似的事情,他们在用鼠标拖动时移动节点。但这似乎不起作用。我没有看到节点按预期移动。这是我的代码。

$("#someElement").click(function() {
  sys.eachNode(function(node, pt) {
    if (node.name === "specificNode") {
      // moveToOrigin
      var s = arbor.Point(1, 1);
      var p = sys.fromScreen(s);
      node.fixed = true;
      node.p = p;
      node.fixed = false;
      node.tempMass = 1000;
    }
  }
});

【问题讨论】:

  • 也许调用一些 Refresh() 之类的方法?你已经设法做到这一点了吗?我也在努力……

标签: javascript graph-visualization arbor.js


【解决方案1】:

要将节点移动到所需位置,请获取相对于画布的所需位置并通过粒子系统的fromScreen(...) 函数进行设置:

var point = point;
var pos = canvas.offset();
var s = arbor.Point(point.x-pos.left, point.x-pos.top);
node.p = particleSystem.fromScreen(s);

【讨论】:

    【解决方案2】:

    你需要先设置节点的位置,然后再次迭代每个循环的节点。

    redraw: function () {
        gfx.clear()
    
        particleSystem.eachNode(function (node, pt) {
            //var node = particleSystem.getNode("Carrol Wahi")
            if (node.data.color == "yellow") {
                var pos = $(canvas).offset();
                var point = particleSystem.fromScreen(arbor.Point(pos.left + 150, pos.top));
                node._fixed = true;
                node._p = point;
                //console.log("x=" + point.x + ", y=" + point.y);
                node.tempMass = .1
            }
        });
    
        particleSystem.eachEdge(function (edge, pt1, pt2) {
            //   your code goes here
          }
        particleSystem.eachNode(function (node, pt) {
           //your code goes here
        })
    

    }

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多