私は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"}
}
ここでの最善のアプローチは何でしょうか?シリアル化およびロード関数をハック/ラップして、メタデータを渡す前に追加/プルアウトすることもできますが、特に解析するネストされたレイヤーやシェイプがたくさんある場合は、実装が不格好で難しいようです。2つの完全に別々のシリアル化を保存できました。1つはkinetic.jsによって生成され、並列のシリアル化は自分のコードによって生成されましたが、やはり不格好です。誰かもっと良いアイデアがありますか?