Canvas 始终使用KineticJS连接画布中两个可拖动元素的线

Canvas 始终使用KineticJS连接画布中两个可拖动元素的线,canvas,anchor,line,kineticjs,use-case,Canvas,Anchor,Line,Kineticjs,Use Case,我正在尝试使用Kinetic JS在HTML5画布中创建一个用例创建者。到目前为止,我可以通过右键单击两个我想要连接的元素(一个参与者和一个用例)来创建一行 但这条线在拖动它所连接到的其中一个元素时保持不变。 我想要一条始终连接两个元素的线,即使其中一个元素被拖动 换句话说,我希望线连接到的元素充当线的锚 我试图理解,但未能实现 拖动actor或useCase时,通过重新定位连接线,可以保持actor+useCase的连接 假设您有3个动力学节点或组: 参与者节点 用例节点 专用于连接它们的动力

我正在尝试使用Kinetic JS在HTML5画布中创建一个用例创建者。到目前为止,我可以通过右键单击两个我想要连接的元素(一个参与者和一个用例)来创建一行

但这条线在拖动它所连接到的其中一个元素时保持不变。 我想要一条始终连接两个元素的线,即使其中一个元素被拖动

换句话说,我希望线连接到的元素充当线的锚


我试图理解,但未能实现

拖动actor或useCase时,通过重新定位连接线,可以保持actor+useCase的连接

假设您有3个动力学节点或组:

  • 参与者节点
  • 用例节点
  • 专用于连接它们的动力线
  • 为参与者和用例设置dragmove事件处理程序

    // when the actor is dragged, reposition the connecting line
    
    actor.on('dragmove', function () {
        connectThem(actor,useCase,connectingLine);
    });
    
    // when the useCase is dragged, reposition the connecting line
    
    useCase.on('dragmove', function () {
        connectThem(actor,useCase,connectingLine);
    });
    
    在dragmove处理程序中,获取参与者和用例的位置,并重新定位连接线

    // reposition the line to connect the actor & useCase
    
    function connectThem(actor,useCase,connectingLine){
    
        // get the XY of the actor+useCase to connect
        var x1 = actor.getX();
        var y1 = actor.getY();
        var x2 = useCase.getX();
        var y2 = useCase.getY();
    
        // reposition the connecting line
        connectingLine.setPoints([x1,y1,x2,y2]);
    
        // send the connecting line to the back
        connectingLine.setZIndex(0);
    
        // redraw the layer
        layer.draw();
    };
    

    说明:1.插入演员。2.插入一个用例。3.右键单击参与者,然后右键单击用例以建立关联。现在唯一的问题是,如何保留连接到特定用例的所有行的记录,以便所有行在拖动连接的用例时显示相同的行为。救命啊!