【发布时间】:2020-11-20 23:38:59
【问题描述】:
我正在尝试跨多个客户端同步 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) 方法访问了一些形状继承的方法(我认为),它失败了,因为 json.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)
也许有另一种方法可以在我的客户之间同步舞台状态?或者我可以做些什么来解决这个问题?
【问题讨论】:
标签: javascript json serialization easeljs