2012-08-26 71 views
3

我想將特定的節點(比如說我有節點引用)移動到所需的位置(比如畫布的左上角)。我試着做一些類似於示例項目中的東西,他們在用鼠標拖動的同時移動節點。但它似乎並不奏效。我沒有看到節點按照我的預期移動。這是我的代碼。如何將節點移動到所需的位置?

$("#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; 
    } 
    } 
}); 
+0

也許調用一些刷新()方法一樣?你已經設法做到這一點?我也在嘗試... – JwJosefy

回答

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); 
1

您需要先重新設置節點的位置,然後迭代節點的每個循環。

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 
    }) 

}

相關問題