【问题标题】:Meaning of this.__canvases.push(canvas);this.__canvases.push(canvas); 的含义
【发布时间】:2014-11-06 16:38:21
【问题描述】:

http://fabricjs.com/customization/ 检查织物 js 示例时 我可以看到 this.__canvases.push(canvas); 被调用,但我无法弄清楚它为什么被调用以及如果不调用它会怎样。

var canvas = new fabric.Canvas('c2');
canvas.add(new fabric.Circle({ radius: 30, fill: '#f55', top: 100, left: 100 }));
canvas.selection = false;
this.__canvases.push(canvas);

【问题讨论】:

    标签: javascript html canvas fabricjs


    【解决方案1】:

    如果您查看示例页面的 HTML,您会在第 95-98 行找到以下代码

    <script>
      this.__canvases = [ ];
      fabric.Object.prototype.originX = fabric.Object.prototype.originY = 'center';
    </script>
    

    这会生成一个空数组,当您使用 this.__canvases.push(canvas); 时,通过将画布对象附加到数组末尾来填充该数组(参见 Array.prototype.push()

    这个数组随后被以下代码使用(在第 455-468 行找到)

    (function() {
      fabric.util.addListener(fabric.window, 'load', function() {
        var canvas = this.__canvas || this.canvas,
            canvases = this.__canvases || this.canvases;
    
        canvas && canvas.calcOffset && canvas.calcOffset();
    
        if (canvases && canvases.length) {
          for (var i = 0, len = canvases.length; i < len; i++) {
            canvases[i].calcOffset();
          }
        }
      });
    })();
    

    此代码仅计算在示例页面上显示画布元素的位置。

    所以为了回答您的问题,它仅用于示例页面以帮助显示示例页面。您的代码中不需要它。在我看来,它不应该包含在每个示例的代码显示中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-03
      • 2019-01-06
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 2014-05-11
      相关资源
      最近更新 更多