Javascript 在fabric.js中创建对象时初始化子类
我试图在画布上创建对象后初始化fabric.js中的子类。我定义了以下子类:Javascript 在fabric.js中创建对象时初始化子类,javascript,fabricjs,Javascript,Fabricjs,我试图在画布上创建对象后初始化fabric.js中的子类。我定义了以下子类: var Route = fabric.util.createClass(fabric.Path, { type: 'routePath', initialize: function(options) { options || (options = {}); this.callSuper('initialize', opt
var Route = fabric.util.createClass(fabric.Path, {
type: 'routePath',
initialize: function(options) {
options || (options = {});
this.callSuper('initialize', options);
},
});
canvas.on('object:added', function(options) {
var createdObject = options.target;
var route = new Route(createdObject.toObject());
});
然后,我侦听对象创建,并希望将创建的fabric.Path
转换为我的Route
子类的实例:
var Route = fabric.util.createClass(fabric.Path, {
type: 'routePath',
initialize: function(options) {
options || (options = {});
this.callSuper('initialize', options);
},
});
canvas.on('object:added', function(options) {
var createdObject = options.target;
var route = new Route(createdObject.toObject());
});
上面的代码似乎不起作用。如果在创建route
变量后检查该变量,则该变量不具有createdObject
所具有的任何属性。似乎所有设置都显示为默认值
编辑
更简单地说,我只是尝试创建一个我的Route
类的新实例。我正在传入一个width
选项,以测试新创建的对象是否包含该宽度:
var testRoute = new Route({width: 150});
alert(testRoute.getWidth()); //alerts 0
为什么宽度是0而不是150?我创建
路由
子类的方式是否有问题?看起来我使用了错误的构造函数定义。以下是工作代码:
var Route = fabric.util.createClass(fabric.Path, {
type: 'routePath',
initialize: function(path, options) {
options || (options = {});
this.callSuper('initialize', path, options);
},
});
canvas.on('object:added', function(options) {
var route = new SlopeRoute(options.target.path, options.target.toObject());
});