Javascript 将画布序列化与元数据合并
我正在基于kinetic.js构建一个交互式环境。我希望能够保存和加载画布的状态以及元数据 我已经知道我可以使用Javascript 将画布序列化与元数据合并,javascript,html5-canvas,kineticjs,Javascript,Html5 Canvas,Kineticjs,我正在基于kinetic.js构建一个交互式环境。我希望能够保存和加载画布的状态以及元数据 我已经知道我可以使用stage.toJSON()来序列化/保存并使用Kinetic.Node.create(stageJson,'container')来加载。但我希望向序列化添加任意数据,以跟踪我的环境将定义/使用的其他属性 标准动能.js序列化示例: { "attrs": { "width": 578, "height": 200, "x": 0
stage.toJSON()
来序列化/保存并使用Kinetic.Node.create(stageJson,'container')
来加载。但我希望向序列化添加任意数据,以跟踪我的环境将定义/使用的其他属性
标准动能.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"}
}
这里最好的方法是什么?在传递元数据之前,我可以对序列化和加载函数进行hack/wrapp,以添加/拉出元数据,但这看起来很笨拙,很难实现,特别是当有很多嵌套层和形状需要解析时。我可以保存两个完全独立的序列化,一个由kinetic.js生成,另一个由我自己的代码生成,但同样笨拙。有谁有更好的主意吗?toJSON()
序列化了所有stage(Node
)的属性。我没有尝试过,但您似乎可以使用
setAttr(key,val)
将自己的属性添加到stage中。在设置它们之后,它们将被序列化,我假设它们也被反序列化
请注意,这并不完全是您所要求的,因为额外的数据不在JSON的根级别,而是在
attrs
子对象中,我可能很傻,但似乎没有getAttr(key)
方法,只是一种鸟枪式的getAttrs()
。奇怪。getAttrs().keyName
会很好,或者显然getAttrs()['keyName']