Ich entwickle ein kollaboratives Whiteboard mit fabricjs. Wenn ein Benutzer ein neues Fabric-Objekt erstellt, serialisiere ich es und sende es an alle anderen Benutzer.Deserialisieren eines JSON-Objekts in Fabric.js
Wenn diese Benutzer das serialisierte Objekt erhalten, sollte es deserialisiert und ihrer Zeichenfläche hinzugefügt werden. Was ist der beste Weg, dies zu tun? Ich war nicht in der Lage, eine Funktion zu finden, die ein einzelnes Objekt deserialisiert, nur die ganze Leinwand (loadFromJSON), so dass ich implementiert eine unelegant Lösung:
function drawRoomObjects(roomObjects){
var canvasString = "{\"objects\":[";
for(var roomObjectKey in roomObjects){
canvasString += roomObjects[roomObjectKey];
}
canvasString += "], \"background\":\"\"}";
var tmpCanvas = new fabric.Canvas();
tmpCanvas.loadFromJSON(canvasString);
for(var k in tmpCanvas.getObjects()) {
canvas.add(tmpCanvas._objects[k]);
}
canvas.renderAll();
}
Irgendwelche Vorschläge für eine bessere Art und Weise, es zu tun?
Das hat wie ein Charme funktioniert. Ich musste einfach 'JSON.parse()' auf meinen JSON-Strings aufrufen, bevor ich 'enlivenObjects' einsetzte – stropitek