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"}
}

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

4

1 に答える 1

2

toJSON()すべてのステージ(Node)の属性をシリアル化します。
試していませんが、を使って自分の属性をステージに追加できるようですsetAttr(key,val)。それらを設定した後、それらはシリアル化され、私はまた逆シリアル化されると思います...

追加のデータはJSONのルートレベルではなく、attrsサブオブジェクトにあるため、これは正確にはあなたが求めていたものではないことに注意してください

于 2013-02-18T22:36:57.903 に答える