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

Initializing subclass on object creation in fabric.js

本文关键字:创建 子类 对象 初始化 fabric js      更新时间:2024-02-10

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

看起来我使用了错误的构造函数定义。这是工作代码:

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());
});