【问题标题】:When extending a fabircjs class what is difference between _render() and render()?扩展 fabircjs 类时,_render() 和 render() 有什么区别?
【发布时间】:2018-09-21 23:47:41
【问题描述】:

我正在创建一个自定义结构类。通过查看结构代码,我注意到一个公共 render() 方法以及一个私有 _render() 方法。虽然我知道结构代码库中的下划线表示私有方法,但我不确定应该覆盖什么方法。 render()的公版和私版有什么关系?为什么有两种不同的方法?我应该什么时候延长它们?

【问题讨论】:

    标签: fabricjs


    【解决方案1】:

    render()在Object类中,用于绘图选择、ctx变换、设置阴影和缓存画布的创建/重绘。

    _render() 用于绘制特定对象,就像在 Circle 类中一样,它绘制一个圆。所以如果你想根据你的要求画一些东西,你需要覆盖特定类的_render()

    演示

    var canvas = new fabric.Canvas('c');
    
    fabric.Circle.prototype._render = function(ctx) {
      ctx.beginPath();
      
      ctx.arc(
        0,
        0,
        this.radius,
        this.startAngle,
        this.endAngle, false);
      this._renderPaintInOrder(ctx);
      ctx.font="30px Arial";
      ctx.fillText('Hi!', 0, 0);
    };
    
    canvas.add(new fabric.Circle({
      radius: 120,
      stroke: 'red',
      fill: ''
    }));
    canvas {
      border: 1px solid #999;
    }
    <script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script>
    <canvas id="c" width="300" height="300"></canvas>

    【讨论】:

      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 2015-07-26
      • 2018-03-06
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 2018-10-20
      • 2020-06-17
      相关资源
      最近更新 更多