Ich habe 2 Rechtecke Objekte, die ich als Hintergrundvorlage verwenden. Die Steuerelemente sind deaktiviert, sie können nur auf die Leinwand gezogen werden. Ich möchte, dass sie sich wie eine Gruppe verhalten: Wenn einer von ihnen ausgewählt wird, ist der andere auch so, dass sie nur zusammen bewegt werden können. Ich möchte sie nicht gruppieren, hauptsächlich weil ich beim Exportieren einen von ihnen entfernen muss und ich kann keinen Weg finden, dies zu tun ... (es sei denn, es gibt eine einfache Möglichkeit, einen Gegenstand in einer Gruppe auszuwählen, aber keine Gruppe. Artikel().() entfernen, weder Funktionen meine Einzelteile zu heben Sie die Gruppierung oder scheint auf meine Exportfunktion)Fabric.js Link/Verknüpfung 2 Objekte
-1
A
Antwort
0
var canvas = new fabric.Canvas('c');
var evented = false;
var rect1 = new fabric.Rect({
left: 50,
top: 30,
fill: 'blue',
width: 150,
height: 150,
hasBorders:false,
hasControls:false
});
var rect2 = new fabric.Rect({
left: 210,
top: 30,
fill: 'magenta',
width: 150,
height: 150,
hasBorders:false,
hasControls:false
});
canvas.add(rect1,rect2);
function rect1MouseDown(option){
this.mousesDownLeft = this.left;
this.mousesDownTop = this.top;
this.rect2Left = rect2.left;
this.rect2Top = rect2.top;
}
function rect1MouseMove(option){
rect2.left = this.rect2Left+ this.left - this.mousesDownLeft ;
rect2.top = this.rect2Top+ this.top- this.mousesDownTop;
rect2.setCoords();
}
function rect2MouseDown(option){
this.mousesDownLeft = this.left;
this.mousesDownTop = this.top;
this.rect1Left = rect1.left;
this.rect1Top = rect1.top;
}
function rect2MouseMove(option){
rect1.left = this.rect1Left+ this.left - this.mousesDownLeft ;
rect1.top = this.rect1Top+ this.top- this.mousesDownTop;
rect1.setCoords();
}
register();
function register(){
if(evented) return;
rect1.on('moving', rect1MouseMove);
rect1.on('mousedown', rect1MouseDown);
rect2.on('moving',rect2MouseMove);
rect2.on('mousedown',rect2MouseDown);
evented = true;
}
function unRegister(){
rect1.off('moving');
rect1.off('mousedown');
rect2.off('moving');
rect2.off('mousedown');
evented = false;
}
canvas {
border: blue dotted 2px;
}
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.min.js"></script>
<button onclick='register()'>Register Event</button>
<button onclick='unRegister()'>Unregister Event</button><br>
<canvas id="c" width="400" height="400"></canvas>
Alternativ Sie links und oben auf ein anderes Objekt kann zu arbeiten, während ein sich bewegendes, Wenn Sie also ein Objekt entsprechend dieser Position bewegen, stellen Sie die Position für die Ruhe ein.
Verwandte Themen
- 1. Scale fabric.js leinwand objekte
- 2. Layering-Objekte in Fabric.js
- 3. So deaktivieren Sie alle Objekte in Fabric.js
- 4. mit Fabric.js
- 5. Leistungsprobleme bei der Verwendung von Fabric.JS mit Angular 2
- 6. fabric.js canvas.toDataURL()
- 7. Objekte werden automatisch verschoben, wenn Sie versuchen alle Objekte auszuwählen (Fabric.JS)
- 8. Optimierung der Leistung in fabric.js
- 9. Vaadin Canvas fabric.js keine Benutzerinteraktion
- 10. fabric.js arbeitet mit Unterklasse
- 11. Fabric.js beta2 - Textunterstreichungsoptionen
- 12. Fabric.js text: geändertes Ereignis
- 13. Fabric.js - Zeichnen regelmäßigen Achtecks
- 14. Join 2 JSON-Objekte
- 15. Fabric.js Bilder in einer Pyramide
- 16. Permanente Aktualisierung von fabric.js canvas
- 17. Javascript fabric.js und Prototyp
- 18. fabric.js: Immer sichtbare Steuerelemente
- 19. Fabric.js animieren Objekt/Bild
- 20. Fabric.js Canvas toDataUrl
- 21. Zeichnen Rechteck mit fabric.js
- 22. fabric.js Fehler in Schienen
- 23. Fabric.js spezifizieren lineCap style
- 24. Fabric.js: Deaktivierung der Abwahl
- 25. Interaktive Textfelder mit Fabric.js
- 26. Raster über Fabric.js-Canvas hinzufügen
- 27. mouse_over auf 2 Schichten 2 Objekte
- 28. Fabric.js FillRule - evenodd (subtrahieren Formen)
- 29. Fabric.js dynamischer Text mit Variable
- 30. Fabric.js text space und strokeWidth
Perfekt! Danke vielmals! – zalemmm
Vergessen Sie nicht zu upvote und markieren, wenn es für Sie funktioniert. Prost ;) – Durga