如何保持对象的属性值?

时间:2016-04-07 12:12:09

标签: javascript fabricjs

这个问题属于fabricJS和canvas。我已经定义了一个名为background的属性,最初设置为false。当用户将对象添加到画布时,我需要将对象的属性状态更改为true。

我尝试过使用background = true;,但它会在整个画布中更改属性值。我如何在添加到画布时为特定对象执行此操作。

1 个答案:

答案 0 :(得分:2)

如果您希望对象具有背景属性,则需要为fabric.js对象类型配备background属性,方法是将其添加到原型中。

fabric.Object.prototype.background = false;

稍后当您添加对象时,您可以选择目标对象并协助

myObject.background = true

如果您需要更改正在添加的对象,您可以在画布上聆听object:added全局侦听器,如下所示:

myCanvas.on( 'object:added', function( e ) {
        var object = e.target;
        object.background = true;
} );

如果在代码中的某处使用对象序列化,则可能需要修改fabricjs提供的对象序列化方法以包含新添加的background属性。

fabric.Object.prototype.toObject = ( function ( toObject ) {
    return function () {
        return fabric.util.object.extend( toObject.call( this ), {
            background: this.background
        } );
    };
} )( fabric.Object.prototype.toObject );