【问题标题】:Initializing subclass on object creation in fabric.js在fabric.js中初始化对象创建的子类
【发布时间】:2015-04-21 12:33:45
【问题描述】:

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

【问题讨论】:

    标签: javascript fabricjs


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 1970-01-01
      • 2022-01-23
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多