Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以通过json共享一个easel.js shape实例?_Javascript_Json_Serialization_Easeljs - Fatal编程技术网

Javascript 是否可以通过json共享一个easel.js shape实例?

Javascript 是否可以通过json共享一个easel.js shape实例?,javascript,json,serialization,easeljs,Javascript,Json,Serialization,Easeljs,我正在尝试跨多个客户端同步html画布的状态。我使用的是easel.js框架,它定义了形状对象。当客户机向其自己的阶段添加形状时,我希望将该形状发送到服务器并将其转发给其他客户机,如下所示: let shape = new createjs.Shape(); shape.graphics.f("blue").drawRect(x, y, 50, 50); conn.send(JSON.stringify(flatten(shape))); 然后在其他客户端上解析它,如下所示

我正在尝试跨多个客户端同步html画布的状态。我使用的是easel.js框架,它定义了形状对象。当客户机向其自己的阶段添加形状时,我希望将该形状发送到服务器并将其转发给其他客户机,如下所示:

let shape = new createjs.Shape();
shape.graphics.f("blue").drawRect(x, y, 50, 50);
conn.send(JSON.stringify(flatten(shape)));
然后在其他客户端上解析它,如下所示:

let shape = JSON.parse(evt.data);
stage.addChild(shape);
stage.update();
但是,由于
stage.addChild(shape)
方法访问了一些shapes继承的方法(我认为),它失败了,因为json.stringify不会对继承的方法进行stringify。 那很好。通过展平对象,我们可以使json字符串化所有属性。 但它试图访问的属性是在对象上定义的方法,据我所知,JSON.stringify将不允许将该方法引入JSON

错误消息是:

Uncaught TypeError: child.dispatchEvent is not a function
at Stage.p.addChild (easeljs.js:7360)
at WebSocket.conn.onmessage (myscript.js:41)

也许有另一种方法可以在我的客户之间同步舞台的状态?或者我可以做些什么来解决这个问题吗?

画架不能很好地支持对象的序列化。FabricJS对这一点以及跨客户端同步画布状态有更好的支持

请参阅上的“序列化”