2012-08-26 3 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 
    }) 

}

관련 문제