将画布序列化与元数据合并

时间:2013-02-18 22:19:13

标签: javascript html5-canvas kineticjs

我正在构建一个基于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生成,一个是由我自己的代码生成的并行序列,但同样,又笨重。谁有更好的想法?

1 个答案:

答案 0 :(得分:2)

toJSON()序列化所有阶段(Node)的属性 我没试过,但似乎你可以使用setAttr(key,val)将自己的属性添加到舞台上。设置它们之后,它们将被串行化,我假设也反序列化......

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

相关问题