2017-08-16 29 views
0

Ich habe eine Überlagerung auf dem Bild Knoten mit dem folgenden CodeDrag Event auf mxGraph Overlay

function addOverlay(vertex,graph) { 
    var imgo = new mxImage("images/collapsed.gif",11,11); 
    var overlay = new mxCellOverlay(imgo,"", 
      mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_MIDDLE, 
      new mxPoint(1, 1),mxConstants.CURSOR_TERMINAL_HANDLE); 
    graph.addCellOverlay(vertex, overlay); 

    // Installs a handler for clicks on the overlay 
    overlay.addListener(mxEvent.CLICK, function(sender, evt2) { 
     var cell = evt2.getProperty('cell'); 
     var state = graph.view.getState(cell); 
     graph.connectionHandler.start(state, 1, 1); 
     graph.isMouseDown = true; 
     graph.isMouseTrigger = true; 
     mxEvent.consume(evt2); 
    }); 
} 
eingefügt

Diese Funktionalität Knoten arbeitet erzeugt, wie unten

node with overlay

nun auf dem im Bild gezeigt Mit einem Klick auf das Overlay werden die Kanten korrekt hinzugefügt, indem man sie an den gewünschten Eckpunkt, , anschließt, aber ich möchte die Kanten zeichnen, indem ich auf das Overlay ziehe.

Wie kann ich das erreichen?

Antwort

0

Overrride mxCellRenderer.installCellOverlayListeners wie folgt:

graph.cellRenderer.installCellOverlayListeners = function(state, 
    overlay, shape) 
{ 
    mxEvent.addGestureListeners(shape.node, function(evt) 
    { 
    graph.connectionHandler.start(state, 1, 1); 
    graph.isMouseDown = true; 
    graph.isMouseTrigger = true; 
    mxEvent.consume(evt); 
    }); 
}; 
+0

Dank einem Haufen, das ist mein Fall ist die Lösung – Saurabh