Я разрабатываю совместную доску с использованием fabricjs. Когда пользователь создает новый объект, я сериализую его и отправляю его всем другим пользователям.Deserialize объект JSON в Fabric.js
var rect = new fabric.Rect();
canvas.add(rect);
socket.emit("newObject", JSON.stringify(rect)); // sends the object to other users
Когда эти пользователи получают сериализованный объект, его следует десериализовать и добавить на свой холст. Каков наилучший способ сделать это? Я не был в состоянии найти функцию, которая Десериализует один объект, только весь холст (loadFromJSON), так что я осуществил unelegant решения:
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();
}
Любые предложения для лучшего способа сделать это?
Это работало как очарование. Мне просто нужно было вызвать 'JSON.parse()' на мои строки json перед использованием 'enlivenObjects' – stropitek