Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在fabric.js中创建对象时初始化子类_Javascript_Fabricjs - Fatal编程技术网

Javascript 在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

我试图在画布上创建对象后初始化fabric.js中的子类。我定义了以下子类:

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