在Fabric.js中仅字符串化一个对象

时间:2013-10-27 22:33:09

标签: javascript canvas fabricjs

我正在使用fabricJS。这是一个很棒的绘图库。

var data = JSON.stringify(canvas);

上面的命令用于以JSON格式获取所有对象及其属性。但是,我想只对一个对象进行stringfy。

例如。使用fabric

创建一个矩形
var rec = new fabric.Rect({
    left: mouse_pos.x,
    top: mouse_pos.y,
    width: 75,
    height: 50,
    fill: 'white',
    stroke: 'black',
    strokeWidth: 3,
    padding: 10
  });
canvas.add(rec);

我希望仅将此对象(矩形)的JSON添加到画布而不是正在渲染的整个画布的JSON。 可能类似于var data = JSON.stringfy(rec);。有没有办法这样做,因为我想通过套接字发送最新的对象被添加到画布而不是整个画布对象,由于JSON对象的大小,这将反过来消耗不必要的带宽。

2 个答案:

答案 0 :(得分:3)

是的,你可以! :)

var rect = new fabric.Rect({
    left: mouse_pos.x,
    top: mouse_pos.y,
    width: 75,
    height: 50,
    fill: 'white',
    stroke: 'black',
    strokeWidth: 3,
    padding: 10
  });

canvas.add(rect);

// get last item
var obj = canvas.item(canvas.size() - 1);

// stringify only one object
var json = JSON.stringify(obj);

答案 1 :(得分:1)

你不能把你的选项对象变成JSON吗?然后你可以通过套接字发送它,在你的接收器上获取JSON,解析它并应用到fabric.Rect函数来绘制你的矩形。

var options = {
    left: mouse_pos.x,
    top: mouse_pos.y,
    width: 75,
    height: 50,
    fill: 'white',
    stroke: 'black',
    strokeWidth: 3,
    padding: 10
};

var rec = new fabric.Rect(options);
canvas.add(rec);

var yourData = JSON.stringify(options); // turns your options object into JSON

// ...rest of your code, that sends it through sockets...