我仍在学习 JS,我一直在尝试使用 KineticJS 制作应用程序,但以面向对象的方式保持它。
所以我有类似的东西:
/* ClassA Constructor */
var ClassA=function(id, x, y, name, layer){
this.id=id;
this.x=x;
this.y=y;
this.name=name;
this.layer=layer;
this.object_group=new Kinetic.Group({
x: x,
y: y,
id: id,
draggable: true,
name: "A_object_group"
});
var object_polygon=new Kinetic.Polygon({
points: [0,0,1,1],
fill: '#ffffff',
stroke: 'black',
strokeWidth: 1,
opacity: 0.5,
name: "A_object_polygon"
});
this.object_group.methodA=function(){
//Method A goes here
};
this.object_group.add(object_polygon);
this.layer.add(this.object_group);
return(this.object_group);
}
然后我将使用 KineticJS 方法 toJSON() 将舞台转换为 JSON,然后使用 Kinetic.Node.create() 方法从 JSON 再次加载它。
一切正常,问题是加载对象后他们将无法识别“ClassA”类中定义的“MethodA”。
我不确定这是否是最好的方法,也许我应该将整个对象序列化为 JSON 而不仅仅是 Kinetic.Group 部分。此外,序列化方法似乎也不是一种有效的方法,所以问题是:如何从 JSON 加载 KineticJS 对象并使它们仍然属于一个类并允许访问该类的方法?