10
我正在使用fabricjs開發協作式白板。當用戶創建新的結構對象時,我將其序列化並將其發送給所有其他用戶。反序列化Fabric.js中的JSON對象
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();
}
任何建議一種更好的方式來做到這一點?
這就像一個魅力。我只需在使用'enlivenObjects'之前在我的json字符串上調用'JSON.parse()' – stropitek