我似乎无法让它发挥作用。我知道你可以用内置的形状函数来做到这一点,比如圆形,多边形但是对于复杂的形状,它仍然可以序列化但是如果你看一下json字符串,你就看不到x,y坐标。 jsfiddle.net/Q7G99/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);