Drag & Drop in den Fabric.js-Canvas

8

Wie kann ich Objekte (wie ein Bild oder ein anderes Objekt aus einer anderen Arbeitsfläche) in die Arbeitsfläche legen, die von fabricjs verwaltet wird? Ich habe viele Beispiele gefunden, wie man Elemente in Canvas verschieben kann, aber ich möchte das Element aus dem äußeren Element in den Canvas ziehen und dort ablegen.

    
user1902317 13.12.2012, 21:28
quelle

3 Antworten

14

Da du nach einem Beispiel gefragt hast und ich es selbst noch nicht ausprobiert habe, geht hier:

Beispielgeige

Markup

%Vor%

JS Aufschlüsselung

1. Fabric.canvas instance

Zuerst wollen wir natürlich unsere Leinwand:

%Vor%

2. Feature-Erkennung (optional)

Nicht sicher, dass dies notwendig ist, da die Tatsache, dass Sie eine Arbeitsfläche haben, es sehr wahrscheinlich macht, dass der Browser Drag and Drop hat. Wenn Sie es verwenden, können Sie dies mit Modernizr tun:

%Vor%

3. Ereignisse

Im Gegensatz zu dem Quellartikel I sind die Quell- und Zielelemente anders (in diesem Beispiel verschieben Sie einfach div s innerhalb des gleichen übergeordneten Containers), sodass ich einige der Ereignisse nicht bemerkt habe sind für das Element gedacht, das gezogen wird, aber die meisten sind an das Element gebunden, in das Sie fallen.

HINWEIS: Ich weiß, dass dies technisch eine Frage zu Fabric.js ist, aber es ist wirklich eine Frage von Drag and Drop im Zusammenhang mit dem Hinzufügen von Objekten zu einem <canvas> mit Fabric.js, weshalb Ich gehe jetzt ein bisschen mehr über das DnD-Zeug.

Für die <img>

  • dragstart (Ich habe hier eine Klasse hinzugefügt, um die Deckkraft zu verringern)
  • dragend (und diese Klasse hier entfernt)

Für #canvas-container :

  • dragenter (hat eine Klasse hinzugefügt, um dem Canvas-Container eine gepunktete Linie zu geben)
  • dragover : Hier können Sie die Eigenschaft event.dataTransfer.dropEffect so einstellen, dass eine der nativen Cursortypen angezeigt wird. Der Standardwert wäre hier 'move' , aber ich setze ihn auf 'copy' , da ich das <img> -Element nicht wirklich entferne (tatsächlich können Sie in der Fiddle, zum Beispiel, mehrere McClures ).
  • dragleave (hier die gepunktete Linie entfernt)
  • drop : Der Handler für dieses Ereignis erstellt und fügt das Objekt fabric.Image hinzu (siehe Geige).
%Vor%

Quellen:

natchiketa 18.06.2013, 17:14
quelle
13

Ich war durch die Geige von @natchiketa gegangen, und das Problem behoben, überprüfen Sie einfach diese Geige ..

Ссылка

%Vor%

Danke

    
AhammadaliPK 04.02.2016 07:21
quelle
0

Nun, die Frage ist ziemlich alt ^^

Ich habe die Geige aktualisiert, nein, es wird auch in Firefox funktionieren.

Geige

%Vor%     
Yves 16.03.2018 12:11
quelle

Tags und Links