我总是得到错误:
“TypeError:Kinetic [type]不是构造函数”
“ReferenceError:对未定义属性obj.nodeType的引用”
当我尝试加载一个json时。
json = stage.toJSON();
stage = Kinetic.Node.create(json, 'myCanvas');
来自Kineticjs 4.3.3的方法_createNode
var no = new Kinetic[type](obj.attrs);
在我的画布上我有一个简单的小组
var circle1 = new Kinetic.Circle({
x: 40,
y: 50,
radius: 42,
fill: 'white',
stroke: 'black',
strokeWidth: 1,
draggable: false
});
var polygon1Tab1 = new Kinetic.RegularPolygon({
x: 40,
y: 50,
radius: 27,
sides: 4,
stroke: 'black',
strokeWidth: 4,
draggable: false
});
polygon1Tab1.rotateDeg(45);
var group1 = new Kinetic.Group({
draggable: true,
});
group1.add(circle1.clone());
group1.add(polygon1.clone());
答案 0 :(得分:0)
答案 1 :(得分:0)
' polygon1 '这只是一个名字......一个改变!!!! 我拿你的代码和地方运行并继续相同的错误! 当我打印json时,我注意到它有错误!
他把这个"children": "[]"
放在括号中,不应该有引号
如果我复制并把我的字符串这个固定的字符串校正轮正常!!
我做了一个方法来删除错误....现在我有一个错误
SyntaxError: JSON.parse: expected property name or '}'
var json = polygonLayer.toJSON();
json = json.replace('"children":"', '"children":');
json = json.substring(0, json.length-2) + json.substring(json.length-1, json.length);
而使用相同的固定字符串有效!
我正在使用4.3.3版本
这项工作
var json = '{"attrs":{"clearBeforeDraw":true,"visible":true,"listening":true,"opacity":1,"x":0,"y":0,"scale":{"x":1,"y":1},"rotation":0,"offset":{"x":0,"y":0},"draggable":false,"dragOnTop":true},"nodeType":"Layer","children":[{\"attrs\": {\"width\": 600, \"height\": 400, \"cornerRadius\": 0, \"fillEnabled\": true, \"strokeEnabled\": true, \"shadowEnabled\": true, \"dashArrayEnabled\": true, \"fillPriority\": \"color\", \"visible\": true, \"listening\": true, \"opacity\": 1, \"x\": 0, \"y\": 0, \"scale\": {\"x\": 1, \"y\": 1}, \"rotation\": 0, \"offset\": {\"x\": 0, \"y\": 0}, \"draggable\": false, \"dragOnTop\": true, \"fill\": \"white\"}, \"nodeType\": \"Shape\", \"shapeType\": \"Rect\"}]}';
layer = Kinetic.Node.create(json, 'canvas');
但这不起作用
var json = layer.toJSON();
layer = Kinetic.Node.create(json, 'canvas');