2013-12-09 2 views
20

Ad esempio, ho più oggetti su una tela, A, * B * e C. Tre di questi oggetti sono selezionati come attivati. Usando Fabric.js, è possibile scaricare o disattivare uno solo uno degli oggetti?Fabric.js: come deselezionare uno o più oggetti su tela?

Ad esempio, tre oggetti come selezionati, quindi quando si fa clic su un pulsante all'esterno dell'area di disegno, l'oggetto B viene scartato/disattivato.

ho guardato nei file doc sul FabricJS sito ufficiale, e ho trovato solo canvas.deactivateAll(), canvas.discardActiveObject(). Queste funzioni sono in grado di disattivare tutti gli oggetti attivi solo se non un oggetto attivo specifico.

Qualcuno potrebbe darmi una guida su questo? Grazie!

risposta

1

ho appena trovato un modo per farlo:

Quando più oggetti vengono attivati, in realtà formato un gruppo. Quindi in realtà basta usare un metodo di fabric.group chiamato "removeWithUpdate", quindi funzionerà.

Esempio:

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

io possa essere in ritardo di risposta, ma nell'ultima fabricjs (1.4.3) è possibile utilizzare il seguente per deselezionare tutti gli oggetti selezionati sulla tela.

canvas.deactivateAll().renderAll(); 

Sto usando questo prima di creare un'immagine di quella tela. Spero che aiuti qualcuno.

+1

Se si desidera attivare anche gli eventi 'selezione: deselezionata e' prima: selezione: deselezionata ', è possibile utilizzare 'canvas.deactivateAllWithDispatch() ' –

10

Supponiamo di avere tre oggetti oggettoA, OggettoB e OggettoC e oggetti selezionati. Ora se vuoi deselezionare qualsiasi oggetto (ad esempio ObjectB). In questo caso puoi provare il seguente codice.

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

Se si dispone di un solo nodo attivo, è possibile farlo.

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

Per eliminare tutti i gruppi attivi è possibile utilizzare sotto function.Discards eventi di gruppo e di fuoco attualmente attivi Se la funzione viene chiamata da tessuto in conseguenza di un evento del mouse, l'evento è passato come un parmater e inviato a la funzione di fuoco per gli eventi personalizzati. Se usato come metodo, il parametro e non ha alcuna applicazione.

canvas.discardActiveGroup(); 

Per scartare l'oggetto sigle è possibile utilizzare in questo modo. Elimina gli oggetti attualmente attivi e gli eventi di fuoco. Se la funzione viene chiamata da fabric come conseguenza di un evento del mouse, l'evento viene passato come parmater e inviato alla funzione fire per gli eventi personalizzati. Se usato come metodo, il parametro e non ha alcuna applicazione.

canvas.discardActiveObject(); 

E l'ultimo infine rende sia la tela superiore che la tela del contenitore secondario in questo modo.

canvas.renderAll();