2014-02-14 80 views
0

我想要做的是使用盡可能少的通話在兩個客戶端之間同步畫布。我發現的最好方法之一是使用Fabric Observables。FabricJS中的同步事件

我真的認爲,做(作爲一個例子)以下將工作。

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)只會觸發事件並且不會創建對象。 這個問題最好的解決方法是什麼?我似乎無法找到正確的方法來調用。

回答

0

那麼,它並不那麼容易。您需要自行解析事件數據。我的意思是選擇目標,選擇你需要的數據,然後通過套接字發送。 其次你必須記住,通過套接字發送對象需要使用.json或.send方法(第二個只接受String)。

在recive構建基於下載PARAMS 「新對象」,就像這樣:

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

ofcourse我簡化它。 爲了使其完全正常工作,您需要檢測畫布中的每個更改(移動,添加,索引更改,分組等)。將拾取的事件從垃圾數據中剝離並推送到套接字中,僅使用有用的參數。 (例如,當您進行選擇或簡單的垂直拖拽時,您不需要發送整個對象或路徑矢量)。

相信我,如果你仍然願意做這個合作畫布,那麼很多工作都要完成。