3

我正在构建一个基于 kinetic.js 的交互式环境。我希望能够保存和加载画布的状态以及元数据。

我已经知道我可以stage.toJSON()用来序列化/保存和Kinetic.Node.create(stageJson, 'container')加载。但是我想将任意数据添加到该序列化中,以跟踪我的环境将定义/使用的其他属性。

标准 kinetic.js 序列化示例:

{
    "attrs": {
        "width": 578,
        "height": 200,
        "x": 0,
        "y": 0
    },
    "nodeType":"Shape",
    "shapeType":"Rect"
}

我希望能够保存/加载的示例:

{
    "attrs": {
        "width": 578,
        "height": 200,
        "x": 0,
        "y": 0
    },
    "nodeType":"Shape",
    "shapeType":"Rect",
    "metaData": {"foo": "bar"}
}

这里最好的方法是什么?我可以在传递元数据之前破解/包装序列化和加载函数以添加/拉出元数据,但这似乎笨重且难以实现,特别是如果有很多嵌套层和形状需要解析。我可以保存两个完全独立的序列化,一个由 kinetic.js 生成,另一个由我自己的代码生成,但同样很笨重。有人有更好的想法吗?

4

1 回答 1

2

toJSON()序列化所有 stage ( Node) 的属性。
我没有尝试过,但似乎您可以使用setAttr(key,val). 设置它们后,它们将被序列化,我假设也被反序列化......

请注意,这并不是您所要求的,因为额外数据不在 JSON 的根级别,而是在attrs子对象中

于 2013-02-18T22:36:57.903 回答