在画布上创建对象后,我试图初始化fabric.js中的子类。我已经定义了以下子类:
var Route = fabric.util.createClass(fabric.Path, {
type: 'routePath',
initialize: function(options) {
options || (options = {});
this.callSuper('initialize', options);
},
});
然后,我会监听对象创建,并希望将创建的fabric.Path
转换为我的Route
子类的实例:
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?我创建Route
子类的方式有什么问题吗?
答案 0 :(得分:0)
看起来我使用了错误的构造函数定义。这是工作代码:
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());
});