我正在构建一个基于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生成,一个是由我自己的代码生成的并行序列,但同样,又笨重。谁有更好的想法?
答案 0 :(得分:2)
toJSON()
序列化所有阶段(Node
)的属性
我没试过,但似乎你可以使用setAttr(key,val)
将自己的属性添加到舞台上。设置它们之后,它们将被串行化,我假设也反序列化......
请注意,这并不是您要求的,因为额外数据不在JSON的根级别,而是在attrs
子对象