在fabric.js中初始化对象创建的子类

时间:2015-02-19 22:59:41

标签: javascript fabricjs

在画布上创建对象后,我试图初始化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子类的方式有什么问题吗?

1 个答案:

答案 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());
});
相关问题