在kineticjs中,是否可以将复杂的形状保存到json并恢复它?

时间:2014-04-04 18:27:42

标签: json kineticjs

我似乎无法让它发挥作用。我知道你可以用内置的形状函数来做到这一点,比如圆形,多边形但是对于复杂的形状,它仍然可以序列化但是如果你看一下json字符串,你就看不到x,y坐标。 jsfiddle.net/Q7G99/1/。序列化和反序列化不会出现任何错误,但画布上没有任何内容。

1 个答案:

答案 0 :(得分:3)

"原语"形状(Kinetic.Rect,Kinetic.Circle等)使用属性来定义它们的形状。

Kinetic.Shape使用上下文绘制命令来定义形状。

属性可以序列化 - 绘图命令不能。

这就是Kinetic.Shape没有完全序列化的原因。

要解决此问题,请将sceneFunc函数保存在随页面加载的.js文件中。

EG。在myShapeSceneFuncs.js中:

// this is the sceneFunc code from var shape1=new Kinetic.Shape

function Shape1SceneFunc(context) {
    context.beginPath();
    context.moveTo(200, 50);
    context.lineTo(420, 80);
    context.quadraticCurveTo(300, 100, 260, 170);
    context.closePath();
    // KineticJS specific context method
    context.fillStrokeShape(this);
} 

// rewire sceneFunc back into shape1

shape1.sceneFunc(Shape1SceneFunc);