2013-12-09 1 views
20

Zum Beispiel habe ich mehrere Objekte auf einer Leinwand, A, * B * und C. Drei dieser Objekte werden als aktiviert ausgewählt. Ist es möglich, mit Fabric.js nur eine der Objekte zu verwerfen/deaktivieren?Fabric.js: Wie kann man ein oder mehrere Objekte auf der Leinwand abwählen?

Beispiel: Drei Objekte ausgewählt, und wenn eine Schaltfläche außerhalb der Zeichenfläche angeklickt wird, wird Objekt B verworfen/deaktiviert.

Ich sah in die doc-Dateien auf FabricJS offizielle Website, und ich fand nur canvas.deactivateAll(), canvas.discardActiveObject(). Diese Funktion kann nur alle aktiven Objekte deaktivieren, während sie kein bestimmtes aktives Objekt sind.

Könnte mir bitte jemand eine Anleitung zu diesem Thema geben? Vielen Dank!

Antwort

1

Ich habe gefunden, nur einen Weg, dies zu tun:

Wenn mehrere Objekte aktiviert werden, sie tatsächlich eine Gruppe gebildet. Dann brauchen Sie eigentlich nur eine Methode von fabric.group namens "removeWithUpdate", dann wird es tun.

Beispiel:

var activeGroup = canvas.getActiveGroup(); 
activeGroup.removeWithUpdate(theObject); 
canvas.renderAll(); 
47

Ich kann diese späte Beantwortung sein, aber in der neuesten fabricjs (1.4.3) können Sie Folgendes verwenden, um alle ausgewählten Objekte auf der Leinwand zu deaktivieren.

canvas.deactivateAll().renderAll(); 

Ich benutze dies vor dem Erstellen eines Bildes dieser Leinwand. Hoffe es hilft jemandem.

+1

Wenn Sie auch die Ereignisse 'selection: cleared' und' before: selection: cleared' auslösen möchten, können Sie 'canvas' verwenden.deactivateAllWithDispatch() ' –

10

Angenommen, Sie haben drei Objekte objectA, ObjectB und ObjectC und Objekte sind ausgewählt. Wenn Sie nun ein beliebiges Objekt (z. B. ObjectB) abwählen möchten. In diesem Fall können Sie den folgenden Code ausprobieren.

var activeGroup = canvas.getActiveGroup(); 
activeGroup.removeWithUpdate(ObjectB); 
canvas.renderAll(); 

Wenn nur ein Knoten aktiv ist, können Sie das tun.

canvas.discardActiveObject(); 
canvas.renderAll(); 
5

Um alle aktiven Gruppen verwerfen Sie unter function.Discards aktuell aktiven Gruppe und Brandereignisse verwenden können, wenn die Funktion von Gewebe als Folge eines Mausereignis aufgerufen wird, wird das Ereignis als parmater weitergegeben und an die Feuerfunktion für die benutzerdefinierten Ereignisse. Wenn es als Methode verwendet wird, hat das e-param keine Anwendung.

canvas.discardActiveGroup(); 

Um Sigle-Objekt zu verwerfen, können Sie wie folgt verwenden. Verwirft derzeit aktive Objekt- und Feuerereignisse. Wenn die Funktion von Fabric als Folge eines Mausereignisses aufgerufen wird, wird das Ereignis als Parameter übergeben und an die Feuerfunktion für die benutzerdefinierten Ereignisse gesendet. Wenn es als Methode verwendet wird, hat das e-param keine Anwendung.

canvas.discardActiveObject(); 

Und ich die letzte schließlich rendert sowohl die obere Leinwand und die sekundäre Container Leinwand wie folgt.

canvas.renderAll();