2

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

var data = JSON.stringify(canvas);

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

例如。使用织物创建一个矩形

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 对象大小而消耗不必要的带宽。

4

2 回答 2

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);
于 2013-10-28T07:07:43.153 回答
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...
于 2013-10-27T22:47:52.327 回答