Kineticjs加载json画布

时间:2013-05-02 16:50:39

标签: json canvas load kineticjs

我总是得到错误:

“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());

2 个答案:

答案 0 :(得分:0)

这里的“polygon1”是什么?

group1.add(polygon1.clone());

我创建了这个例子。一切都很好:http://jsfiddle.net/lavrton/N3UPX/

答案 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');