【问题标题】:Is it possible to share a easel.js shape instance through json?是否可以通过 json 共享一个 easel.js 形状实例?
【发布时间】: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


    【解决方案1】:

    Easel 不能很好地支持对象的序列化。 FabricJS 对此提供了更好的支持,并在客户端之间同步画布的状态。

    请参阅fabricjs tutorial 上的“序列化”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 2011-04-30
      • 2020-06-17
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多