在FabricJS中同步事件

时间:2014-02-14 14:28:26

标签: javascript events fabricjs socket.io

我想要做的是尽可能少地在两个客户端之间同步画布。我找到的最好的方法之一就是使用Fabric Observables。

我真的认为做(例如)下面的工作会有效。

CanvasIO.socket = io.connect('http://localhost:8080');

CanvasManager.canvas.on('object:added', function(data) {
    CanvasIO.socket.emit("object:added", data);
});

CanvasIO.socket.on('object:added', function(data) {
    CanvasManager.canvas.trigger('object:added', data);
});

但是,trigger(event, data)仅触发事件并且不创建对象。 关于这个问题,最好的解决方法是什么?我似乎无法找到适当的方法来调用。

1 个答案:

答案 0 :(得分:0)

嗯,这并不容易。您需要自己解析事件数据。我的意思是选择目标,选择您需要的数据,然后通过套接字发送。 其次你必须记住,通过socket发送对象需要使用.json或.send方法(第二个只接受String)。

on recive build" new Object"基于下载的参数,如下:

var obj = new Object(_downloadedData);
canvas.add(obj);

当然我简化了它。 要使其完全正常工作,您需要检测画布中的每个更改(移动,添加,索引更改,分组等)。从垃圾数据中删除拾取的事件,并将仅推送到套接字有用的参数。 (例如,当您进行选择或简单的垂直拖动时,您不需要发送整个对象或路径向量...)。

相信我,如果你仍然愿意制作这个协作画布,那么还有很多工作要做。