0

我总是得到错误:

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

2 回答 2

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');
于 2013-05-07T13:11:35.340 回答
0

这里的“polygon1”是什么?

group1.add(polygon1.clone());

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

于 2013-05-05T04:38:02.427 回答