2017-09-12 1 views
0

Ich versuche zu erkennen, ob ein Objekt bei einem Mouse-Down-Ereignis ausgewählt wurde und ob kein Objekt zum Zeichnen in Fabric ausgewählt wurde. Daher kann ich die Zeichenfläche im Zeichnungsmodus nicht verlassen, sondern muss sie festlegen, sobald ich festgestellt habe, dass das Ereignis "Mouse Down" kein Ziel hatte. Im Moment habe ich versucht, die Maus nach unten Ereignis auf der Leinwand Retriggerung a la:Wie wird mit dem Zeichnen eines Pfades unmittelbar nach dem Festlegen der Zeichenfläche in Zeichnungsmodus in FabricJS begonnen?

aber ich bin nicht so viel Glück. Das Ereignis wird erneut ausgelöst, aber ein Pfad beginnt nicht auf der Zeichenfläche zu zeichnen. Hat jemand irgendwelche Ideen?

Antwort

1

Sie können die Funktion aufrufen, die von Fabric aufgerufen würde, wenn Sie sich im Zeichenmodus befinden, bevor Sie die Maustaste loslassen.

Achten Sie auf die if-Bedingung eingefügt !this.isDrawingMode oder Sie erhalten eine Endlosschleife der Rekursion.

var canvas = new fabric.Canvas('c'); 
 
canvas.add(new fabric.Rect({width: 50, height: 50})); 
 
canvas.on('mouse:down', function(opt) { 
 
    if (!opt.target && !this.isDrawingMode) { 
 
    canvas.isDrawingMode = true; 
 
    canvas._onMouseDownInDrawingMode(opt.e) 
 
    } 
 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.18/fabric.min.js"></script> 
 
<canvas id="c" ></canvas>

+0

Perfekt, vielen Dank für Ihre Hilfe! Dies ist ein praktischer Trick beim "Aufnehmen" von Objekten, die Sie gerade zu einer Leinwand hinzugefügt haben! – fearnb

Verwandte Themen